我有一些测试依赖于我标记为“内容”的一些文件和“始终复制”。我正在使用DeploymentItem属性来确保在VS之外运行mstest时将它们复制到输出目录。但是,当在VS中使用Resharper测试运行器时,这些文件永远不会进入它正在执行的目录。任何人都知道如何解决这个问题?
答案 0 :(得分:9)
禁用Unit Testing > Shadow-copy assemblies being tested
Resharper选项为我解决了这个问题。
答案 1 :(得分:4)
我们通过将测试文件标记为嵌入资源来解决此问题,然后使用a utility method to read the embedded resource并将其写入预期位置。
答案 2 :(得分:0)
我还为基于NUnit的测试而苦苦挣扎,因为我在测试项目中有一些文件,希望在测试过程中读取这些文件。
通过NCrunch运行可以正常工作,但是使用Resharper时,它找不到文件,因为它正在使用其他位置(例如C:\ Users \ myuser \ AppData \ Local \ JetBrains \ Installations \ ReSharperPlatformVs15_f6172a1d_000)。
拔掉头发后,我终于找到了解决方法。而不是使用
Environment.CurrentDirectory
或
System.Reflection.Assembly.GetEntryAssembly().Location
NUnit中有一个内置属性:
TestContext.CurrentContext.TestDirectory
现在,所有内容在NCrunch,ReSharper和内置的Visual Studio Test Explorer中都是一致的! (提醒:您仍然必须设置“构建操作” =“内容”并复制到输出目录” =“始终复制”)
希望其他测试库中也有类似的东西。