在集成测试中,异步过程(方法、外部服务)构成了非常艰难的测试代码。相反,如果为了测试,我将异步部分分解出来并创建一个依赖项并将其替换为同步部分,这会是一件“好事”吗?
通过用同步进程替换异步进程,我不是在本着集成测试的精神进行测试吗?我想我假设集成测试是指接近真实事物的测试。
最佳答案
好问题。
在单元测试中,这种方法是有意义的,但对于集成测试,您应该测试真实系统,因为它会在现实生活中运行。这包括任何异步操作及其可能产生的任何副作用 - 这是最有可能存在错误的地方,可能是您应该集中测试而不是将其排除在外的地方。
我经常使用“waitFor”方法,轮询以查看是否已收到答案,如果没有收到则在一段时间后超时。这种模式的一个很好的实现是 JUnitConditionRunner,虽然你可以得到要点的特定于 java .例如:
conditionRunner = new JUnitConditionRunner(browser, WAIT_FOR_INTERVAL, WAIT_FOR_TIMEOUT);
protected void waitForText(String text) {
try {
conditionRunner.waitFor(new Text(text));
} catch(Throwable t) {
throw new AssertionFailedError("Expecting text " + text + " failed to become true. Complete text [" + browser.getBodyText() + "]");
}
}
关于testing - 在集成测试中,为了测试用同步进程替换异步进程是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1396407/