为什么visual studio 2012找不到我的测试?

ctr*_*lor 220 .net c# unit-testing visual-studio

我有一些使用内置的测试Microsoft.VisualStudio.TestTools.UnitTesting,但无法让它们运行.

我正在使用visual studio 2012 ultimate.

我有两个项目的解决方案; 在测试方法和引用(版本10.0.0.0,运行时版本v2.0.50727)之前using Microsoft.VisualStudio.TestTools.UnitTesting,有一个测试,[TestClass]在类 [TestMethod]之前Microsoft.VisualStudio.QualityTools.UnitTestFramework.我试过dot-net framework 3.5,4和4.5其他人给出了重新定位错误.

我试图构建解决方案和项目.测试资源管理器的消息是"构建您的解决方案以发现所有可用的测试".单击"全部运行"以构建,发现和运行解决方案中的所有测试.

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


也尝试过这样做:http://msdn.microsoft.com/en-US/library/ms379625%28v=VS.80%29.aspx但没有成功:当我被问到时,我陷入了开始部分的困境右键单击并选择create tests.没有create tests.


我有这个测试(它编译,但不会出现在测试资源管理器中):

using Microsoft.VisualStudio.TestTools.UnitTesting;

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

我现在已经发现(见下面删除的答案),因为它位于共享驱动器上,但我还不知道如何绕过它.(关于安全设置的事情可能).

Our*_*mie 227

我有相同的症状,但在不同的情况下.

我不得不为Peter Lamberg的解决方案添加一个额外的步骤 - 清理您的解决方案/项目.

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

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

我不得不去测试菜单 - >测试设置 - 默认处理器架构 - > x64.

他们仍然没有露面.

做了一个.

仍然没有出现.

最后做了一个清洁

然后他们出现了.

我发现清洁解决方案和清洁在设置更改时获得解决方案非常有用.有时我必须走极端并删除objbin目录并进行重建.

  • 哇!"清洁解决方案"似乎确实有效(而不仅仅是重建所有).我认为这在Visual Studio 6.0中不再有用了! (7认同)
  • 这对我来说.在混合了x86,Any CPU,x64的解决方案中,没有找到一个特定项目的测试.我清理了解决方案,更改了测试设置的默认架构,然后重建,然后可以看到所有内容.这真的没有意义,因为改变架构发现了在不同CPU架构下编译的测试. (2认同)
  • 当我更改默认处理器时 - 我的所有测试都显示出来.非常感谢! (2认同)

Joe*_*ing 160

请将关键字public添加到您的类定义中.您的测试类目前在其自己的程序集之外不可见.

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

  • 这对我来说,几乎令人尴尬我没有发现自己:) (24认同)
  • 我也遇到了这个问题,我的问题是`[TestMethod]`因为其他代码的复制粘贴而变得静止. (5认同)
  • 也不要在你的方法前放置`static`.我不知道为什么我经常出于习惯这样做. (4认同)
  • @Seph:我的[TestMethod]处于静态状态,因为这是新测试项目中的UserTest1.cs所具有的功能!也解决了我的问题。 (2认同)

Pet*_*erg 58

这有时会奏效.

检查"测试"菜单下的处理器体系结构是否与用于构建解决方案的处理器体系结

测试 - >测试设置 - >默认处理器架构 - > x86/x64

如其他帖子中所述,请确保打开"测试资源管理器"窗口.测试 - > Windows - >测试资源管理器

然后使用测试重建项目应该使测试显示在测试资源管理器中.

编辑:正如Ourjamie在下面指出的那样,做一个干净的构建也可能有所帮助.除此之外,还有一件事我遇到了:

在Configuration Manager中未选中"构建"复选框,以获取我在解决方案下创建的新测试项目.

转到Build - > Configuration Manager.确保为所有解决方案配置和解决方案平台检查了测试项目是否已构建复选框.


小智 32

我有Visual Studio 2012,我在Test Explorer中看不到测试,

所以我安装了以下内容: NUnit Test Adapter

这解决了我的问题!


Moo*_*ght 18

根据我最近的经验,以上所有都不起作用.我的测试方法

public async void ListCaseReplace() { ... }
Run Code Online (Sandbox Code Playgroud)

没有出现,但编译得很好.当我删除async关键字时,在测试资源管理器中显示测试.这是async void一种"发射后遗忘"的方法.制定方法async Task,你将得到你的测试!

此外,没有将Test项目的配置设置为"Build"也会阻止测试显示.Configuration Manager>检查您的测试以构建.

  • 我花了很长时间来弄明白这一点.我重构了一些异步方法,只是将关键字添加到测试中.只有当我用这个编码一个新的单元测试时,我注意到其他测试也都丢失了.我发现[这个答案](http://stackoverflow.com/questions/19317135/why-cant-async-void-unit-tests-be-recognized)解释了为什么会发生这种情况. (2认同)

Tar*_*nin 12

由于该项目是在原始海报所示的共享驱动器上.VS.NET在加载和运行测试程序集之前需要信任网络位置.阅读这篇博客文章.

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

 caspol -m -ag 1.2 -url file:///H:/* FullTrust
Run Code Online (Sandbox Code Playgroud)

要验证或列出运行的现有受信任位置:

 caspol -lg
Run Code Online (Sandbox Code Playgroud)

  • @richard所以你接受了一个你没有验证的答案,并低估了其他答案,这些答案描述了解决问题的不同原因的解决方案?....那真是怪了! (6认同)

小智 10

我发现的一个问题是,如果解决方案在网络驱动器/网络位置/共享驱动器上运行,则在测试资源管理器中找不到测试(没有显示)

您可以通过添加环境变量来解决此问题.

COMPLUS_LoadFromRemoteSources并将其值设置为1


Edw*_*san 6

我收到了错误: "Failed to initialize client proxy: could not connect to vstest.discoveryengine.exe."

尝试以管理员身份运行Visual Studio.这对我有用.

还有另一个Stack Overflow帖子讨论了这个错误,同样的解决方案适用于他们.这个问题仍然存在.

  • 也为我工作过!我认为这是一个单独的问题. (3认同)
  • 嘿,这是有效的人.非常感谢..任何解决方法,使其无需以管理员身份运行? (2认同)
  • 对不起我不认为以管理员身份运行是一个很好的解决方案.除非证据证明这是唯一的方法. (2认同)

Ste*_*uer 6

我有同样的问题..在我的情况下,它是由私人财产 造成的TestContext.

将其更改为以下内容有助于:

public TestContext TestContext
{
    get;
    set;
}
Run Code Online (Sandbox Code Playgroud)

清理并构建解决方案后(如@Ourjamie的回答中所述),受测试的测试类中的测试方法可在测试资源管理器中找到.

  • 它****同样的问题,它只是**由其他东西引起**.... (2认同)

小智 6

尝试在网络共享上打开解决方案时遇到了同样的问题.在这种情况下,测试资源管理器不会检测到任何单元测试.解决方案原来是:

控制面板 - > Internet选项 - >"安全"选项卡 - >单击"内部网",将保存网络共享的服务器IP地址或主机名添加到"站点"列表中.

在这之后,我重新编译了解决方案,现在测试出现了.这应该与@BigT的答案非常相似.


Sof*_*tor 6

用于解决一些常见测试问题的快速检查清单.确保:

  1. 测试类和测试方法是 public
  2. 测试类有[TestClass]属性
  3. 测试方法有[TestMethod]属性

如果这没有帮助,请尝试清理,重建解决方案并重新启动Visual Studio.


ctr*_*lor 0

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

我读到它可以配置为从共享驱动器工作,但从未这样做过,因为当我发现该解决方案时,我已经切换到 Debian 上的 MonoDevelop。