我有一些测试是使用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");
        }
    }
}

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


当前回答

这更多的是为了帮助那些最终来到这里的人,而不是回答OP的问题:

尝试关闭和重新打开视觉工作室,为我做的把戏。

希望这能帮助到一些人。

其他回答

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

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

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

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

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

因为该项目是在一个共享驱动器上,原来的海报已经表明。VS.NET在加载和运行测试程序集之前需要信任网络位置。读一读这篇博客文章。

为了允许VS.NET加载网络共享的内容,需要将它们(共享)添加到可信位置。要将一个位置添加到完整的信任列表运行(显然根据您的环境需要进行修改):

 caspol -m -ag 1.2 -url file:///H:/* FullTrust

要验证或列出现有的受信任位置,执行以下命令:

 caspol -lg

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

I found the best way to troubleshoot this issue is to create a .proj msbuild file and add your unit test projects which you hare having an issue into this file and execute the tests using the command line version of mstest. I found a small configuration issue in my app.config which only appeared when running the tests from mstest - otherwise the test project built just fine. Also you will find any indirect reference issues with this method as well. Once you can run the Unit test from the command line using mstest you can then do a clean solution, rebuild solution and your test should be discovered properly.

由于这些答案都没有涉及到我遇到的原因,对于这个问题,我也将在这里添加我的答案。

在我的例子中,这是一个复制粘贴代码的问题。我们有一个TestProjectA,其中有特定类型的测试,我们希望将它们拉出到它自己的测试项目testprojecb中。现在的问题是,当TestProjectA中的测试继续正常显示时,新的TestProjectB中的测试不会在VS测试资源管理器中显示——除非你特别构建了TestProjectB或手动右键单击那里的测试并运行它。

原因是在复制粘贴代码时,一些名称空间没有得到更新:

在命名空间TestProjectA中的TestClassA中有一个TestMethodA()。ModuleA的文件路径\TestProjectA\TestClassA.cs 以及命名空间TestProjectA中的TestClassB中的TestMethodA()。ModuleA的文件路径\ testprojecb \TestClassB.cs

因此,visual Studio在输出窗口中输出一条消息,表明这两个项目的testd是相同的,并且由于两个项目之间的testd冲突,在测试资源管理器中继续显示TestProjectA而不是testprojecb。将命名空间更正为TestProjectB。ModuleB for \ testprojecb \TestClassB.cs修复了这个问题。