Java 你能在不定义@Mock字段的情况下@InjectMock深存根吗?
您可以将Java 你能在不定义@Mock字段的情况下@InjectMock深存根吗?,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,您可以将mock注入到@InjectMock中,使其成为深存根,还是需要使用深存根定义每个mock?仅为了用深存根对未使用字段进行注释而定义该字段是不方便的 例如,有没有一种方法可以做到这一点而不定义injected,因为它从未在任何地方使用过 @InjectMocks private Object testMe; @Mock (answer = Answers.RETURNS_DEEP_STUBS) private Object injected; 不,你不能。您还可以收集各种有趣的警告标
mock
注入到@InjectMock
中,使其成为深存根,还是需要使用深存根定义每个mock?仅为了用深存根对未使用字段进行注释而定义该字段是不方便的
例如,有没有一种方法可以做到这一点而不定义injected,因为它从未在任何地方使用过
@InjectMocks
private Object testMe;
@Mock (answer = Answers.RETURNS_DEEP_STUBS)
private Object injected;
不,你不能。您还可以收集各种有趣的警告标签:
- 发件人: 警告:常规干净代码很少需要此功能!留给遗留代码。Mocking a mock返回mock,返回mock,(…),返回违反德米特定律或模拟值对象(众所周知的反模式)的有意义的提示 有一天我在网上看到了一句很好的话:每次模拟返回一个模拟,一个仙女就死了
- 发件人: Mockito将尝试仅通过构造函数注入、setter注入或属性注入按顺序注入mock,如下所述。如果以下任何策略失败,Mockito将不会报告失败;i、 e.您必须自己提供依赖项 构造函数注入选择最大的构造函数,然后仅使用测试中声明的mock解析参数。如果使用构造函数成功创建了对象,那么Mockito将不会尝试其他策略。Mockito已决定,如果对象具有参数化构造函数,则不会[sic]损坏该对象