集成测试资源路径的最佳实践?

时间:2011-11-29 14:21:09

标签: c# nunit integration-testing jenkins

今天我在jenkins建立了一个新的ms构建项目,其中包含单元测试和集成测试。在我将项目移动到jenkins之前,我使用我的本地机器来运行测试(Nunit,Reshaper)。

我的一些集成测试使用数据库来测试某些逻辑,我将数据库文件位置配置为静态属性,在我的测试中用于建立数据库连接。

你可以想象当我将项目移动到jenkins时这是一个小问题,因为我没有在同一位置的数据库文件。

为了解决这个问题,我在集成测试中更改了一些SetUp()方法。它们从文本文件加载文件夹,此文件夹指向存储所有所需文件的资源路径。现在我可以在jenkins和我的本地机器上运行测试。

我对此感觉不好,感觉不正确。你会怎么做才能解决我的问题?模拟文件不是解决方案,我想与文件进行交互。

谢谢!

2 个答案:

答案 0 :(得分:1)

如何将测试数据文件添加到源控制系统以及.net项目中。然后配置它们应该被复制到'out'目录中,你可以在单元测试中访问它们,因为它们将被msbuild复制到该文件夹​​中。

答案 1 :(得分:1)

一般来说,我认为,在运行单元测试期间从文件中获取任何内容并不是一个好主意。特别是从txt / xml / etc文件中取出任何内容都不是一个好主意,正如您所想的那样,这些文件将被复制到debug文件夹中。不同的单元测试引擎表现不同,其中一些具有shadow copy选项,其中一些可能默认启用此选项。 Shadow copy几乎无法在原始Debug文件夹中找到非dll文件。

我建议您将所需的所有数据嵌入到测试程序集中。有两种方法可以做到:

  1. 将测试数据硬编码为某个类中的字符串。然后将其写入文件或直接使用它。
  2. 将文件添加为将嵌入到测试程序集中的资源。