说我有一个文件data.xml
。我想打开这个相对于我的应用程序,从我的exectuable旁边开始使用例如File.Open(data.xml)
。我将该文件作为现有资源添加到我的Visual Studio(2017)项目中,并将其配置为在构建时复制到输出目录。这很有效。
我的问题是我在我的解决方案中有第二个项目,包含我的NUnit测试,引用主项目。在我运行测试之前构建它时,这会将不复制data.xml
复制到测试二进制目录,并且测试失败,因为它无法打开文件(显然)。
进行单元测试时应该如何处理外部文件?我更倾向于不使用绝对路径。
答案 0 :(得分:0)
我认为你的意思是应用程序使用数据文件,而不仅仅是测试。 当VS将应用程序复制到您的测试输出目录中时,它不会复制任何其他内容,如您所见。
有几种方法可以去...
在测试项目中添加一个构建后步骤,将文件从app输出目录复制到测试输出目录。这将有效但维护起来很混乱。我不推荐它。
在您的应用中嵌入资源并将其更改为使用资源而不是外部文件。缺点是它可能需要在应用程序中进行多项更改,具体取决于您访问数据的方式。如果意图是更改文件将立即改变应用程序的行为而不重新编译它,它根本不会工作。
将一个或两个应用更改为使用公共输出目录。这样,每当数据发生变化时,它都会被复制并可用于所有测试。这是我一般喜欢处理这种情况的方式。