[英]Dependency verify functions call mockito
我想创建单元测试来测试包含另一个对象的类。 我已经为第二个对象创建了一个模拟器。
当我测试我的第一个类的方法时,我想验证是否调用了第二个对象的函数。 为此,我使用函数verify(mock).myfunction();
我的问题是我的第一个类的几个函数可以调用我的对象2的相同功能。
当我编写测试类时,我按函数编写测试函数,但似乎在测试方法开始时没有重置“时间”。
我不知道我是否清楚,因此,一个例子:
public class Main {
public Object o = createObject();
public void function1(){
o.function();
}
public void function2(){
o.function();
}
public Object createObject() {
return new Object() ;
}
public class MainTest {
private static Main main;
@BeforeClass
public static void setUp() throws Exception {
final Object mockO = mock(Object.class);
main = new Main() {
@Override
public Object createObject() {
return mockO;
}
};
}
@Test
public void testfunction1(){
verify(main.world[0], never()).function();
main.function1();
verify(main.world[0]).function();
}
@Test
public void testfunction2(){
verify(main.world[0], never()).function();
main.function2();
verify(main.world[0]).function();
}
如果我测试testfunction1()
和testfunction2()
被忽略了,那就行了。
如果我测试testfunction2()
和testfunction1()
被忽略,它就可以了。
但如果执行了两个测试,我有一个错误:
org.mockito.exceptions.verification.NeverWantedButInvoked:
Object.function();
Never wanted here :
-> at test.MainTest.testfunction1
but invoked here :
at source.Main.function2
我如何独立测试这两个功能?
将setUp()
方法重命名为其他方法,使其成为非静态方法,并将其@Before
而不是@BeforeClass
:
private Main main;
@Before
public void initMain()
{
// what you already do
}
@BeforeClass
方法在类中的所有测试之前运行一次,而@Before
方法在每次测试之前运行一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.