ReSharper单元测试运行器找不到内容文件。

11

我有一些依赖于已被标记为“内容”和“始终复制”的文件的测试。我正在使用DeploymentItem属性,以确保在在Visual Studio外运行mstest时将它们复制到输出目录中。然而,在使用VS内部的Resharper测试运行器时,这些文件从未到达执行目录。有人知道如何解决这个问题吗?


2015年了还有这个问题!JetBrains的表现真的很差。他们的测试基础设施变得有点脆弱。我认为他们的测试运行器应该足够智能,能够将内容文件复制到测试运行器的工作目录中。 - Tim Long
3个回答

11

对于我来说,禁用Resharper选项中的单元测试 > 复制被测试的程序集解决了这个问题。


2
我们不想嵌入资源,所以对我们来说,这是一个更好的解决方案/答案。+1 - Christoph

4

这可能是处理依赖于外部文件的测试的最佳和最健壮的方法。我已经放弃了Deployment items,即使在VS2012中,似乎使用ReSharper作为测试运行器时DeploymentItems仍然不可预测。 - nrjohnstone
链接已损坏。 - Rodrigo Juarez

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测试资源管理器之间的一切都是一致的!(提醒:您仍然需要设置“生成操作”=“内容”和“复制到输出目录”=“始终复制”)

希望其他测试库中也有类似的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接