假设我有一个文件 data.xml
。我想打开这个相对于我的应用程序,首先使用例如 File.Open(data.xml)
在我的可执行文件旁边开始。我将该文件作为现有资源添加到我的 Visual Studio (2017) 项目中,并将其配置为在生成时复制到输出目录。这行得通。
我的问题是我的解决方案中有第二个项目包含我的 NUnit 测试,引用了主项目。当在我运行测试之前构建时,这不会将 data.xml
复制到测试二进制目录并且测试失败,因为它无法打开文件(很明显) .
单元测试时如何处理外部文件?我更愿意不使用绝对路径。
最佳答案
我假设您的意思是数据文件由应用程序使用,而不仅仅是由测试使用。 当 VS 将应用程序复制到您的测试输出目录时,它不会复制任何其他内容,如您所见。
有几种方法可以到达这里...
向您的测试项目添加构建后步骤,以将文件从应用程序输出目录复制到测试输出目录。这会起作用,但维护起来很麻烦。我不推荐它。
将资源嵌入到您的应用中并将其更改为使用资源而不是外部文件。缺点是它可能需要在应用程序中进行多项更改,具体取决于您访问数据的方式。如果意图是更改文件将立即更改应用程序的行为而无需重新编译,则它根本不起作用。
更改一个或两个应用程序以使用通用输出目录。这样,只要数据发生变化,它就会被复制并可供所有测试使用。这就是我通常喜欢的处理情况的方式。
关于c# - 使用 NUnit 进行测试时应该如何处理数据文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47674684/