public void publicMethod() {
privateMethod1();
privateMethod2();
privateMethod3();
privateMethod4();
}
private void privateMethod4() {
anotherPrivateMethodOrServiceCall();
// ....
}
private void privateMethod3() {
anotherPrivateMethodOrServiceCall();
// ....
}
private void privateMethod2() {
anotherPrivateMethodOrServiceCall();
// ....
}
private void privateMethod1() {
anotherPrivateMethodOrServiceCall();
// ....
}
私有方法不能單獨進行測試,而不會將其設置爲默認值(而且這有點難看)。 如果我從公開的方法測試它,它總是會導致一個超級大嘲弄和斷言。維護如此大的測試用例是一件痛苦的事情。處理這個問題的其他好方法或實踐?謝謝。如何單元測試調用私有方法鏈的方法?
// long list of service mocking
@Test
public void testPublicMethod() {
context.checking(new Expectations() {{
// super long list of result mocking
}});
// ...
// super long list of assertions
assertEquals(....);
}
這通常表明您正在測試錯誤的東西。你不應該測試被調用的私有方法,你應該測試對外部服務的調用(並且這些調用應該是通過模擬服務完成的)。 –
publicMethod本身是一個服務調用。它調用很多其他服務調用。 – Drogba
您可以使用反射來調用測試用例中的私有方法 –