我有一些依赖于已被标记为“内容”和“始终复制”的文件的测试。我正在使用DeploymentItem属性,以确保在在Visual Studio外运行mstest时将它们复制到输出目录中。然而,在使用VS内部的Resharper测试运行器时,这些文件从未到达执行目录。有人知道如何解决这个问题吗?
我有一些依赖于已被标记为“内容”和“始终复制”的文件的测试。我正在使用DeploymentItem属性,以确保在在Visual Studio外运行mstest时将它们复制到输出目录中。然而,在使用VS内部的Resharper测试运行器时,这些文件从未到达执行目录。有人知道如何解决这个问题吗?
对于我来说,禁用Resharper选项中的单元测试 > 复制被测试的程序集
解决了这个问题。
我也曾经在使用基于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测试资源管理器之间的一切都是一致的!(提醒:您仍然需要设置“生成操作”=“内容”和“复制到输出目录”=“始终复制”)
希望其他测试库中也有类似的功能。