And*_*ite 12 java unit-testing callback
更完整的问题是,给定一个期望回调作为参数的依赖项,如何编写覆盖回调逻辑的单元测试并仍设法模拟依赖项?
public class DoStuff {
public void runThis(Runnable callback) {
// call callback
}
}
public class ClassUnderTest {
private DoStuff stuffToDo;
public void methodUnderTest() {
this.stuffToDo.runThis(/*a runnable with some logic*/)
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我会模拟,stuffToDo因为我应该验证方法调用的调用和模拟输出.但是,runThis模拟导致回调逻辑未被测试.此外,回调逻辑似乎应该是私有的,所以我不希望直接测试它; 或许这对我来说是一种误解.
由于回调被相当广泛地使用,我希望有一种常用的方法来测试它们,但我还没有找到它.
hvg*_*des 10
你不能在一次测试中.如果你嘲笑的东西,它的嘲笑,这意味着它只能验证参数和模拟返回值(您在测试配置).
实际上,模拟某事的全部意义在于测试单独使用模拟的内容.如果你想进行单元测试DoStuff,你不必担心使用一些可能会或可能不起作用的回调实现.你嘲笑回调,所以你不必担心它.
您还可以通过测试孤立的回调代码,有很好的测试,并通过抛出集成测试的好办法,在您使用的完全配置的组件作为隔离测试回调用户(使用回调一个模拟),也许整个.
| 归档时间: |
|
| 查看次数: |
8610 次 |
| 最近记录: |