下载单元测试

时间:2010-01-22 19:44:20

标签: java unit-testing download integration-testing

我正在编写一个Java程序,可以下载并处理许多网页。在没有命中远程服务器的情况下测试下载页面的程序组件的最佳实践是什么?

4 个答案:

答案 0 :(得分:1)

一种想法是使用“InputStream”作为传递给处理代码的对象。我相信通过HTTP读取数据的HttpClient(或等效类)为您提供了一些读取响应的流。对于测试,您可以替换不同类型的流来读取,例如本地FileStream。

答案 1 :(得分:1)

因此,执行下载的组件和处理页面的组件应该是单独的。任何时候你在单元测试一段代码时遇到问题,这表明你可能试图在一个组件中做太多。

一旦你完成了,你测试处理部分然而最有意义。让处理器组件将InputStream或甚至只是一个String作为输入。

对于下载部分,您可能需要进行集成测试。集成测试通常涉及更多,需要设置本地Web服务器(maven可以这样做),或者至少使用文件:URL。

答案 2 :(得分:1)

如果您的代码支持拥有HTTP代理,那么您可以拥有一个用作代理的网络外缓存。只需使用代理缓存运行一次代码,保存数据,网络延迟等。然后,您可以使用代理运行代码,只返回数据。要在两者之间切换,只需配置HTTP代理即可。

这种方法的优点是您可以针对任意数量的站点进行单元测试。您的网络缓存/ http代理将可以重复使用以供将来使用。

答案 3 :(得分:0)

查看依赖注入
这种技术可以将不同的“依赖”注入到函数中,而不是将它们放在函数中(简单的解释)。

阅读Martin Fowlers关于DI的文章 http://martinfowler.com/articles/injection.html

希望它能帮助你 /乔纳斯