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

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


当前回答

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

在我的例子中,这是一个复制粘贴代码的问题。我们有一个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修复了这个问题。

其他回答

这里没有一个解决方案对我有帮助。一个解决方案的测试不会被发现,而另一个解决方案引用相同的项目工作得很好。我最终通过删除solutionname.v12解决了这个问题。缩文件。

在我最近的经验中,以上所有方法都不起作用。我的测试方法

public async void ListCaseReplace() { ... }

没有出现,但编译良好。当我删除async关键字时,测试显示在测试资源管理器中。这是因为async void是一个“fire-and-forget”方法。将该方法设置为async Task,您将获得测试结果!

此外,不将“测试”项目的配置设置为“生成”也将阻止显示测试。配置管理器>检查要构建的测试。

问题是测试运行程序配置为不从远程驱动器运行测试。当我将项目复制到本地驱动器时,它工作得很好,但我需要在共享驱动器上(不记得为什么)。

我读到过它可以配置为在共享驱动器上工作,但一直没有这样做,因为当我发现这个解决方案时,我已经在Debian上切换到MonoDevelop了。

您可以做的最简单的事情是,将这些文件从文件资源管理器拖放到Test项目中。再次构建项目,您就可以开始了!

OR

在文本编辑器中打开Test项目的.csproj文件,并手动包含要编译的文件名。在文件中搜索Compile标记,并添加要运行的文件。

<ItemGroup>
    <Compile Include="TestSettings.cs" />
    <Compile Include="TestLibrary.cs" />
    <Compile Include="UnitTest1.cs" />
</ItemGroup>

为文件添加Compile标记并保存它。现在进行测试您的单元测试文件将被检测并运行。

这只咬了我一口。我向项目添加了一个测试,但无法在测试资源管理器中显示它。我以前的检查结果都出来了最后,我意识到我只是在查看一个特定的播放列表,并且我还没有将新的测试添加到播放列表中。如果你使用播放列表,选择“所有测试”,看看VS是否找到你的测试并在测试资源管理器中显示它们。然后你也可以将它们添加到所需的播放列表中。