我想創建單元測試來測試包含另一個對象的類。我爲這個第二個對象創建了一個模擬。依賴驗證函數調用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()'方法是'static' ...爲什麼? –
我有一個錯誤,如果我刪除靜態「java.lang.Exception:方法setUp()應該是靜態的」 – helene
嗯,你會考慮切換到TestNG? :p當這個錯誤消息經常被報告爲組件x和y中的一個錯誤時,它會被Google搜索到...... TestNG從來沒有遇到過這樣的問題。 – fge