为什么@InjectMocks
这种测试可能会避免这种情况.
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@Mock
private Bar bar;
@InjectMocks
private Foo foo; // created by Mockito
@Test
public void shouldCallMethod() {
// when
foo.myMethod();
// then
...
}
}
Run Code Online (Sandbox Code Playgroud)
Foo.java
public class Foo {
private final Bar bar;
public Foo(Bar bar) {
this.bar = bar;
}
...
Run Code Online (Sandbox Code Playgroud)
我在对这个答案的评论中读到了这个:https://stackoverflow.com/a/21172873/516167
标记应在其上执行注射的区域.
- 允许速记模拟和间谍注射.
- 最大限度地减少重复模拟和间谍注射.
参考:@InjectMocks JavaDoc.