public class A {
public void methodOne(int argument) {
//some operations
B b = methodTwo(int argument);
// some operations based on b
// switch cases based on returned values of b
}
private void methodTwo(int argument)
DateTime dateTime = new DateTime();
//use dateTime to perform some operations
}
回答
如果你真的必須嘲笑B
類,那麼你可以做如下(不使用PowerMock,而是在JMockit庫):
public class ExampleTest {
@Tested A a;
@Test
public void exampleTest(@Mocked B anyB) {
// Record calls to methods on B, if/as needed by code under test:
new Expectations() {{ anyB.doSomething(); result = "mock data"; }};
// Exercise the code under test:
a.methodOne(123);
// Verify a call to some other method on B, if applicable:
new Verifications() {{ anyB.someOtherMethod(anyString, anyInt); }};
}
}
注意:此測試並不怎麼在意A
獲得B
。它與實施細節無關,如private methodTwo
,因爲一個好的測試應該始終如一。
理想情況下,您不需要!
含義:您的methodOne()返回某個值。所以,如果可能的話,你應該更喜歡而不是測試內部。因此,你應該編寫用各種參數調用methodOne()的測試用例;然後聲明該方法返回的值與您的例外相匹配。
如果您確實需要控制該「B」對象才能進行合理的測試,那麼正確的方法是使用依賴注入,並以某種方式向受測試的類提供B對象。因爲那樣你就可以創建一個嘲弄的B並把它交給你的課堂。
換句話說:學習如何編寫可測試的代碼;例如通過觀看這些videos。認真;該材料的每一分鐘都值得你花時間。
謝謝..我會通過視頻 – mani
控制從「A」級使用的對象「B」沒有「*正確的方法」。除此之外,依賴注入是一種選擇,每個選項都有自己的權衡。 –
- 1. 的Mockito:僅使用局部變量
- 2. 在沒有現有文件的情況下使用Mockito/PowerMockito模擬FileInputStream
- 3. 如何使用mockito使用'when'來模擬變量的值?
- 4. 如何在以下情況下模擬方法調用?
- 5. 如何在不使用$ scope的情況下使用apply()方法?
- 6. 如何在不使用指針的情況下模擬指針?
- 7. 如何在不使用java.awt.robot的情況下模擬mousePressed事件?
- 8. 如何在不使用全局函數的情況下在我的代碼中引用局部變量
- 9. 如何在不模擬的情況下存儲Python方法
- 10. 如何在不使用全局變量的情況下編寫此代碼?
- 11. 如何在不使用變量的情況下編程scala DSL?
- 12. 如何在不使用SSL的情況下保護POST方法?
- 13. 如何在不保存的情況下使用validate()grails方法?
- 14. 避免使用全局變量在這種情況下
- 15. 我可以在這種情況下使用全局變量嗎?
- 16. 在sweet.js情況下使用全局變量
- 17. 如何在完全不同的方法中使用局部方法變量?
- 18. 如何在不使用不同變量名的情況下更新rails模型中實例方法的屬性?
- 19. 如何在使用(Power)Mockito類初始化時嘲諷私有靜態方法的靜態調用?
- 20. 如何在這種情況下使用模擬?
- 21. 如何在不使用類型的情況下使用GET傳遞變量?
- 22. 如何僅使用Mockito模擬Spring中的bean方法?
- 23. 如何在不更改全局變量的情況下更改分配給全局值的局部變量?
- 24. 如何在Mockito中模擬全局變量
- 25. 使用Jamine在不模擬的情況下測試AngularJS服務
- 26. 如何在不使用OpenGL ES的情況下使UIImage變亮?
- 27. 如何使用PowerMockito模擬私有靜態方法?
- 28. Mockito與局部變量
- 29. 如何在不使用`send`的情況下定義一個私有的define_singleton_method?
- 30. 如何在不使用全局的情況下在函數間使用多個變量?
不要在評論中提供更多信息。總是更新你的問題。 – GhostCat