【发布时间】:2010-07-20 12:02:06
【问题描述】:
我有一些读取和修改文件的函数。为了使单元测试独立于任何文件系统问题,我想将文件包含在项目中。
但是,我的函数应该是获取文件路径,而我能从程序集中得到的只是一个 FileStream。知道如何获取项目中资源文件的文件路径吗?
System.Reflection.Assembly a = System.Reflection.Assembly.Load(assemblyName);
FileStream stream = a.GetFile(assemblyName + "." + fileName);
【问题讨论】:
-
恕我直言,此类测试数据永远不应内置到测试中,而应单独提供(这也使您可以使用不同的数据重新运行测试而无需重建)。您担心哪种文件系统问题?
-
我不喜欢单元测试依赖于可以更改、移动、更改等的外部资源。这个单元测试是为了检查 1 个场景,我想要测试那个确切的场景,所以它应该独立于文件权限可以更改、打开的文件处理程序太多、NTFS 磁盘不可用等事实。 .
-
我认为这是一个非常好的问题。至于真正的单元测试,我承认应该避免使用文件数据,但是如果您想到集成测试(例如,我目前正在编写文件阅读器),那么使用“真实”测试数据是有意义的。
标签: c# unit-testing assemblies