在使用NUnit进行测试时,我应该如何处理数据文件?

时间:2017-12-06 12:48:15

标签: c# visual-studio file nunit

说我有一个文件data.xml。我想打开这个相对于我的应用程序,从我的exectuable旁边开始使用例如File.Open(data.xml)。我将该文件作为现有资源添加到我的Visual Studio(2017)项目中,并将其配置为在构建时复制到输出目录。这很有效。

我的问题是我在我的解决方案中有第二个项目,包含我的NUnit测试,引用主项目。在我运行测试之前构建它时,这会将复制data.xml复制到测试二进制目录,并且测试失败,因为它无法打开文件(显然)。

进行单元测试时应该如何处理外部文件?我更倾向于不使用绝对路径。

1 个答案:

答案 0 :(得分:0)

我认为你的意思是应用程序使用数据文件,而不仅仅是测试。 当VS将应用程序复制到您的测试输出目录中时,它不会复制任何其他内容,如您所见。

有几种方法可以去...

  1. 在测试项目中添加一个构建后步骤,将文件从app输出目录复制到测试输出目录。这将有效但维护起来很混乱。我不推荐它。

  2. 在您的应用中嵌入资源并将其更改为使用资源而不是外部文件。缺点是它可能需要在应用程序中进行多项更改,具体取决于您访问数据的方式。如果意图是更改文件将立即改变应用程序的行为而不重新编译它,它根本不会工作。

  3. 将一个或两个应用更改为使用公共输出目录。这样,每当数据发生变化时,它都会被复制并可用于所有测试。这是我一般喜欢处理这种情况的方式。