How can I load this file into an NUnit Test?
我有以下集成测试项目结构…
如果我想在
注意:文件是
干杯:
可以在要复制到输出文件夹的文件的属性中以及单元测试内部指定:
1 | string text = File.ReadAllText(TestContext.CurrentContext.TestDirectory +"TestData\\126.txt"); |
作为替代方案,您可以将此文件作为资源嵌入测试程序集中,然后:
1 2 3 4 5 6 | var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream("ProjectName.Tests.IntegrationTests.TestData.126.txt")) using (var reader = new StreamReader(stream)) { string text = reader.ReadToEnd(); } |
如果不希望文件作为清单资源,而是作为系统上的文件。在确定程序集的目录时,请参阅nunit的问题以了解更多信息,尤其是此答案。
同样有趣的是来自nunit的信息https://bugs.launchpad.net/nunit vs adapter/+bug/1084284/comments/3
但以下是快速信息:
1 | Path.Combine(TestContext.CurrentContext.TestDirectory, @"Files\test.pdf") |
其中,files est.pdf只是测试项目中的一个文件,包含构建操作内容,如果更新,则复制到输出目录
所有的学分都发给了其他职位的人,但我花了一段时间才找到答案,这就是我为什么要在这篇文章中添加答案的原因。
此问题目前已得到解答,但对于搜索其他可能性的谷歌用户:
如果您得到一个
要解决这个问题,您可以通过如下方式查找测试dll的目录来获取
1 2 3 4 5 6 7 | using System.IO; using System.Reflection; // Get directory of test DLL var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); // dir is now"C:\...\bin\Debug" or wherever the executable is running from |
我把它放在测试项目中的一个
代码是由这个答案提供的。
用
1 2 3 | C:\Users\<username>\.nuget\packages unit\3.10.1\lib etstandard2.0 |
然而,使用
1 2 | C:\SVN\MyApp\trunk\MyApp.Tests\bin\Debug etcoreapp2.1 |