我有一些测试依赖于我标记为“内容”的一些文件和“始终复制”。我正在使用DeploymentItem属性来确保在VS之外运行mstest时将它们复制到输出目录。但是,当在VS中使用Resharper测试运行器时,这些文件永远不会进入它正在执行的目录。有人知道怎么修这个东西吗?
禁用Unit Testing > Shadow-copy assemblies being tested
Resharper选项为我解决了这个问题。
我们通过将测试文件标记为嵌入资源然后使用a utility method to read the embedded resource并将其写入预期位置来解决此问题。
我也在努力进行基于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的一切都是一致的! (提醒:您仍然需要设置“构建操作”=“内容”并复制到输出目录“=”始终复制“)
希望在其他测试库中有一个等价物。