1 回答

TA贡献1812条经验 获得超5个赞
编辑:
对于 JUnit5 和 mockito,请参考这个答案:
How to use Mockito with JUnit5
我也更新了下面的示例。
Edit2:由于 TO 没有说明正在使用哪个 JUnit 版本或 mockito 版本,如果仍然不起作用,我将尝试编辑答案。
感谢您@helospark
指出这一点。
使用 Runner 或 Rule 不适用于 JUnit5,因此可能应该使用 Mockito Version 2。
使用 Mockito Version 1 时,需要显式调用 init 方法。
@BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);
}
对于 Junit5 和最新的 Mockito 版本 (2.27),测试类应该如下所示:
class InnerClass {
public void doSomething(String fileName) {
}
}
class SomeClass {
InnerClass innerClass;
public boolean doSomething(String fileName) {
innerClass.doSomething(fileName);
return true;
}
}
@ExtendWith(MockitoExtension.class)
class SomeClassTest {
@InjectMocks
SomeClass someClass;
@Mock
InnerClass innerClass;
@Test
public void test() {
someClass.doSomething("test");
Mockito.verify(innerClass, Mockito.times(1)).doSomething(Mockito.any());
}
}
添加回答
举报