Visual Studio 2013不会发现单元测试

mig*_*eia 146 .net c# unit-testing visual-studio visual-studio-2013

我在visual studio 2013中有一个简单的解决方案,它由一个Web项目,一个库项目和一个单元测试项目组成.当我打开解决方案并尝试运行单元测试时,它们不会被visual studio发现.要运行测试,我尝试进入菜单并选择测试 - >运行 - >运行所有测试或打开测试资源管理器窗口.通过那些方法,visual studio不会在解决方案中发现任何测试.

首先创建一个简单的单元测试项目并尝试运行测试,visual studio知道发现测试并且我可以运行它.然后,如果我打开我以前的解决方案,visual studio现在会发现所有的测试.我尝试保存我的解决方案,但关闭它并重新打开,而不首先创建单元测试项目,visual studio没有再次找到测试.这是一个非常奇怪的行为,我不知道为什么会发生这种情况.

我曾经独自在这个项目中工作,该项目使用了与visual studio团队基础集成的源代码控制git.当一个新元素进入项目并且我需要通过在线源控件重新创建解决方案时,visual studio不会发现单元测试的问题就开始了.在此之前,所有测试总是由visual studio发现.

为了创建单元测试,我使用了dll Microsoft.VisualStudio.QualityTools.UnitTestFramework.我的Visual Studio版本是:Microsoft Visual Studio Express 2013 for Web Version 12.0.30723.00 Update 3.我的.net框架版本是4.5.50938.

我的所有测试都是这样的:

[TestClass] 
public class Service1Test 
{ 
    [TestMethod] 
    public void Test1() 
    {
        Assert.IsTrue(True); 
    } 
}
Run Code Online (Sandbox Code Playgroud)

And*_*dyG 209

我注意到的一些事情我不时要做,以便让测试正确显示.

  1. 如果您的解决方案位于受保护的驱动器中,您需要管理员访问权限进行读/写,则有时只会进行一部分测试.在这种情况下,绝对以管理员身份运行VS.

  2. 如果您的解决方案是64位,请确保将"测试">"测试设置">"默认处理器体系结构"设置为x64.有时它被设置为x86.将其设置为x64,然后重建.

  3. 有时只需重新启动Visual Studio就可以了,因为测试资源管理器会重新启动.

  4. 不要忘记实际构建测试项目/解决方案.(如果您希望它与其他项目一起构建,请右键单击解决方案>属性>配置属性>配置>选中测试项目的"构建"框)

  5. 确保测试位于public测试类的一部分中

  • 我意识到这个答案有点晚了,但是我的谷歌搜索把我带到了这里,没有提到解决了我的问题.最终我发现它在我的列表中排名第2,所以我想留下那些知识,加上我随着时间的推移而获得的其他技巧. (34认同)
  • #2和#3的组合为我做了.Visual Studio抱怨我的解决方案中的许多(非测试)项目被排除在测试发现步骤之外,因为它们是为x86构建的,但这很好. (7认同)
  • 我在VS2015中遇到了同样的问题.#2解决了我的问题. (6认同)
  • 我发现我的设置都是正确的,重新启动不起作用.为我解决问题的原因只是构建解决方案.我知道这可能看起来很愚蠢,但这是不必要的; 我没有看到任何官方文档提到这一步. (4认同)
  • 我不知道为什么人们会为那些经常失败的产品支付这么多钱.我不得不将我的项目升级到2015年,并在发现我的测试之前做了2次#3次. (2认同)
  • 我热情地讨厌测试资源管理器 (2认同)

Far*_*ukh 81

如果您使用NUnit,请务必先下载NUnit Adapter.

转到工具→扩展和更新...→在线→搜索"NUnit测试适配器".

  • 我正在使用Microsoft的UnitTests.在这种情况下,我认为没有必要安装任何东西. (2认同)

Noc*_*tis 59

确保您的测试类是public可以找到的.如果您正在引用另一个类,请确保相同.

此外,有时如果您没有Asserts或者您没有用a装饰测试,则[TestMethod]可能无法识别测试.

还有两件事:1)异步单元测试充其量只是搞笑,而在最坏的情况下根本没有.看看Stephen Cleary的这篇文章,如果你感兴趣的话,请留在那里.

2)如果您使用NUnit并遇到相同的问题,请记住它是[TestCase]针对Nunit而不是[TestMethod]

说了上面的内容,这里有一篇我在代码项目中发布的文章,两个MSTest&NUnit,如果你想给它一个旋转,并确保你没有遗漏任何东西.


Fra*_*ank 28

我有同样的问题,但其他解决方案都没有.事实证明我正在使用NUnit 3框架和2适配器.

如果您使用的是NUnit 3,请转到Extensions and Updates并安装NUnit3测试适配器.


Sus*_*Guy 12

XUnit用户可能会注意到Test Explorer窗口不再列出任何测试.为了让测试再次被发现,请尝试以下重点提示.

如果您在发现或运行测试时遇到问题,则可能是Visual Studio中损坏的运行器缓存的受害者.要清除此缓存,请关闭所有Visual Studio实例,然后删除文件夹%TEMP%\ VisualStudioTestExplorerExtensions.还要确保您的项目仅链接到单个版本的Visual Studio runner NuGet包(xunit.runner.visualstudio).

键入TEMP以查找目标文件夹


小智 11

我不时遇到这个问题.对我有用的是关闭Visual Studio并转到文件夹:

%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache
Run Code Online (Sandbox Code Playgroud)

并删除它的内容.

打开Visual Studio并再次加载项目后,测试资源管理器应包含您的测试


小智 5

对于未来的googlers,我有一个罕见的情况导致了这一点.

在我的基础测试类中,我有一个名为TestContext的属性.这干扰了MSTest保留的TestContext属性,导致我的所有测试都被VS/Resharper隐藏,除了一个(它没有从基础继承).