我想创建单元测试来测试包含另一个对象的类。我为第二个对象创建了一个模拟。
当我测试我的第一个类的方法时,我想验证是否调用了第二个对象的函数。为此,我使用该功能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
如何独立测试这两个功能?