我有以下類,並且我測試了方法1,方法2和方法3被模擬。我只測試如下的案例: *如果method2調用OK然後==> OK * if method2 throws NotFoundException and method3 returns OK ==> OK * if method2 throws NotFoundException and method3 throws ServiceException ==> ServiceException確實拋出爲從同一類調用方法的方法編寫測試
爲了測試method1的功能,可以模擬方法method2和method3嗎?我還爲method2和method3添加了單獨的測試,所以我知道他們正在全力工作。
class ClassUnderTest {
public void method1() {
try {
method2();
} catch (NotFoundException e) {
method3()
}
}
public void method2() throws NotFoundException {
...
}
public void method3() throws ServiceException {
...
}
}
部分模擬應謹慎使用。它可能會導致設計不佳。一般來說,你應該測試行爲,而不是實現。你可以在這裏找到更多的解釋:http://stackoverflow.com/questions/18430915/partial-mocks-are-bad-why-exactly – ziollek