集成测试资源路径的最佳实践
本文关键字:最佳 测试资源 路径 集成 | 更新日期: 2023-09-27 18:16:00
今天我在Jenkins中建立了一个新的ms构建项目,其中包含单元测试和集成测试。在我将项目移动到jenkins之前,我使用我的本地机器运行测试(Nunit, shaper)。
我的一些集成测试使用数据库来测试一些逻辑,并且我将数据库文件位置配置为静态属性,该属性在我的测试中用于建立数据库连接。
你可以想象这是一个小问题,当我把项目转移到詹金斯,因为我没有数据库文件在同一位置。
为了解决这个问题,我现在在我的集成测试中改变了一些SetUp()方法。他们从一个文本文件加载一个文件夹,这个文件夹指向一个资源路径,我需要的所有文件都存储在那里。现在我可以在jenkins和我的本地机器上运行测试了。
我有一种不好的感觉,它感觉不正确。你会怎么解决我的问题?模拟文件不是解决方案,我想与文件交互。
谢谢!
一般来说,我认为在运行单元测试期间从文件中获取任何东西都不是一个好主意。特别是从txt/xml/etc文件中获取任何东西都不是一个好主意,正如您所设想的那样,这些文件将被复制到debug
文件夹。不同的单元测试引擎表现不同,有些有shadow copy
选项,有些可能默认开启该选项。Shadow copy
将使几乎不可能在原Debug
文件夹中找到非dll文件。
我建议将您需要的所有数据嵌入到测试程序集中。有两种方法:
- 在某些类中将测试数据硬编码为字符串。然后将其写入文件或直接使用它。
- 将文件作为资源添加到测试程序集中。
如何将测试数据文件添加到您的源代码控制系统和。net项目中呢?然后配置它们应该被复制到'out'目录中,你可以在单元测试中访问它们,因为它们将被msbuild复制到该文件夹中。