我有一些测试是使用Microsoft.VisualStudio.TestTools内置的。单元测试,但不能让它们运行。

我使用visual studio 2012终极版。

我有两个项目的解决方案;一个有测试,使用Microsoft.VisualStudio.TestTools。UnitTesting, [TestClass]在类之前,[TestMethod]在测试方法之前,并参考Microsoft.VisualStudio.QualityTools.UnitTestFramework(版本10.0.0.0,运行时版本v2.0.50727)。我已经尝试过。net框架3.5,4和4.5其他人给出了一个重定向错误。

我已经尝试构建解决方案和项目。测试资源管理器显示“构建解决方案以发现所有可用的测试”。单击“全部运行”可在解决方案中构建、发现和运行所有测试。

问题是:如何让visual studio找到测试?


我也试过遵循这个:http://msdn.microsoft.com/en-US/library/ms379625%28v=VS.80%29.aspx但没有成功:当我被要求右键单击并选择创建测试时,我被困在了开始的部分。没有创建测试。


我有这个测试(它编译,但不显示在测试资源管理器):

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace tests {
    [TestClass]
    public class SimpleTest {
        [TestMethod]
        public void Test() {
            Assert.AreEqual("a","a", "same");
        }
    }
}

我现在发现(见下面删除的答案),这是因为它在一个共享驱动器上,但我还不知道如何绕过它。(可能是关于安全设置的问题)。


当前回答

Visual Studio 2015 (v.14.....) -同样的问题

原因:NUnit和NUnit测试适配器版本不同 在我的情况下,我有最新版本的NUnit(3.5)和NUnit测试适配器,但测试适配器不是正确的。对于NUnit3或更高级别,必须使用NUnit3TestAdapter

解决方案: 卸载了“有问题的”NUnint测试适配器,并安装了UNit3TestAdapter v.3.5.0(现在最新的是3.6.0,但没有使用它,以保持它与NUnit相同)

重新构建解决方案测试后弹出:)

其他回答

我有同样的症状,但情况不同。

我不得不在Peter Lamberg的解决方案中添加一个额外的步骤——清理你的解决方案/项目。

我的unittest项目的目标是x64。当我创建这个项目时,它最初是针对x86的。

切换到x64后,我所有的单元测试都消失了。

我必须去测试菜单->测试设置-默认处理器架构-> x64。

他们还是没有出现。

做了一个构建。

还是没出现。

终于做了一次清洁

然后他们出现了。

我发现清洁解决方案和清洁是相当有用的,让解决方案发挥球时,设置已经改变。有时我不得不走到极端,删除obj和bin目录,并进行重建。

这些都是很好的答案,但我知道还有一个原因;我只是碰巧碰到它。在我的一个测试中,我有一个ReSharper消息,表明我有一个未使用的私有类。这是一个我将在即将到来的测试中使用的类。这实际上导致我所有的测试都消失了。

我也有同样的问题。在我的例子中,它是由私有属性TestContext引起的。

将其更改为以下方式会有所帮助:

public TestContext TestContext
{
    get;
    set;
}

在清理和构建解决方案之后(如@Ourjamie的回答所述),受影响的测试类中的测试方法在测试资源管理器中是可用的。

Visual Studio Professional 2012,更新4。将互操作函数定义(DllImport/extern)作为测试类放在同一个项目中会使测试资源管理器感到困惑。将Interop移到一个单独的项目中,解决了这个问题。

对我来说,解决方案没有那么复杂。

我只是把一个现有的解决方案带到我的机器上(从gitHub克隆),我们不跟踪Visual Studio创建的自动生成的.cs文件。(每个特性文件都有一个同名的。cs文件)

在没有关联的.cs文件的情况下打开解决方案实际上允许我导航到绑定的方法,因此specflow似乎正确地连接起来了,但我无法在test Explorer中查看测试名称。

对于这个问题,简单地从项目中排除特性文件,然后重新包含它们,迫使VS重新生成这些自动生成的代码隐藏文件。

之后,我就可以在测试资源管理器中查看测试了。