単体テストを作成して、別のオブジェクトを含むクラスをテストしたいと考えています。この 2 番目のオブジェクトのモックを作成しました。
最初のクラスのメソッドをテストするとき、2 番目のオブジェクトの関数が呼び出されるかどうかを確認したいと思います。このために、関数を使用します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()
無視した場合、それは仕事です。
しかし、2 つのテストが実行されると、エラーが発生します。
org.mockito.exceptions.verification.NeverWantedButInvoked:
Object.function();
Never wanted here :
-> at test.MainTest.testfunction1
but invoked here :
at source.Main.function2
2 つの機能を個別にテストするにはどうすればよいですか?