当前位置:  开发笔记 > 开发工具 > 正文

如何使用Visual Studio的内置自动化测试对文件编写方法进行单元测试?

如何解决《如何使用VisualStudio的内置自动化测试对文件编写方法进行单元测试?》经验,为你挑选了2个好方法。

如果该方法必须打开文件流本身,那么很难模拟.但是,如果您可以将流传递给方法,并使其写入该方法,则可以传入MemoryStream.替代重载可以占用更少的参数,打开文件并将FileStream传递给另一个方法.

这样你就得不到完整的覆盖范围(除非你写了一两个确实碰到磁盘的测试)但是你的大多数逻辑都在经过完全测试的代码中,在采用Stream参数的方法中.



1> Jon Skeet..:

如果该方法必须打开文件流本身,那么很难模拟.但是,如果您可以将流传递给方法,并使其写入该方法,则可以传入MemoryStream.替代重载可以占用更少的参数,打开文件并将FileStream传递给另一个方法.

这样你就得不到完整的覆盖范围(除非你写了一两个确实碰到磁盘的测试)但是你的大多数逻辑都在经过完全测试的代码中,在采用Stream参数的方法中.



2> Marc Gravell..:

这取决于你的代码与nut'n'bolts的接近程度; 例如,您可以在Streams中工作,并将a传递MemoryStream给代码(并检查内容).您可以只写入文件系统(在临时区域中),检查内容并在之后丢弃它.如果你的代码比文件系统高一点,你可以用IFileSystem你需要的高级方法(比如WriteAllBytes/ WriteAllText)编写一个可模拟的接口.不过,模拟流式API会很痛苦.

从互联网下载(或假装)...你可以(例如)IWebClient用你需要的功能(如DownloadString,等)编写一个界面; 嘲笑它返回固定内容,并使用类似的东西WebClient作为实际实现的基础.当然,您需要针对真实站点测试实际实现.


并且针对真实站点测试实际实现将是"集成测试",大多数单元测试框架允许您从标准测试中组织出来.您运行这些集成测试的次数少于标准单元测试,因为它们会很慢(因为实际测试的是"物理"事物,而不是伪造的东西.
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有