Kev*_*vin 3 java unit-testing mocking
我对单元测试有疑问.我好几天都在考虑它,但找不到答案.
说,我有一个从Web服务下载文件并将其写入磁盘的功能.在没有实际看到文件被下载并写入磁盘的情况下测试它的目的是什么?
虽然我知道我们可以嘲笑网络服务,但我在这种情况下如何做到这一点?据我所知,Mockito之类的东西只是模仿行为而不是提供有意义的数据(本例中的文件).
即使我们可以模拟Web服务的行为,我如何模拟将文件写入磁盘而不真正写入磁盘?
对不起,我没有具体的例子.请随时提出您的意见.
非常感谢
我总是说单元测试你的代码使它更加模块化,因为它迫使你思考如何解耦这个类并单独测试它.
在你想要测试诸如将文件写入磁盘之类的情况下,你可以改为让你的方法编写文件来与之交互.OutputStream这将确保你可以简单地传递ByteArrayOutputStream给函数而不是实际FileOutputStream你可以得到bytes转换为String并检查内容是否与您实际期望的内容匹配.
也可以创建临时文件并传递FileOutputStream临时文件进行写入,然后可以检查文件的内容.
通过使方法与a交互OutputStream,可以使其与识别文件路径,创建FileOutputStream等的过程分离.
正如您所提到的,如果只是从某个Web服务获取数据并将其写入文件,那么测试此函数可能没什么意义.但是,如果它在智能操作数据或预期在Web服务交互引发异常时执行某些操作,则测试它会很有趣.
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |