C# Visual Studio 2013没有';t发现单元测试

C# Visual Studio 2013没有';t发现单元测试,c#,.net,visual-studio,unit-testing,visual-studio-2013,C#,.net,Visual Studio,Unit Testing,Visual Studio 2013,我在VisualStudio2013中有一个简单的解决方案,它由一个web项目、一个库项目和一个单元测试项目组成。当我打开解决方案并尝试运行单元测试时,VisualStudio无法发现它们。要运行测试,我尝试进入菜单,选择测试->运行->运行所有测试,或者打开测试资源管理器窗口。通过这些方法,VisualStudio不会在解决方案中发现任何测试 首先创建一个简单的单元测试项目并尝试运行测试,VisualStudio知道如何发现测试,我可以运行它。然后,如果我打开以前的解决方案,VisualStu

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

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

我曾经在使用VisualStudioTeam Foundation的源代码管理Git的项目中单独工作。VisualStudio未发现单元测试的问题始于项目中出现新元素时,以及我需要通过在线源代码管理重新创建解决方案时。在此之前,所有测试都是由VisualStudio发现的

为了创建单元测试,我使用dll Microsoft.VisualStudio.QualityTools.UnitTestFramework。我的visual studio版本是:Microsoft visual studio Express 2013 Web版本12.0.30723.00更新3。我的.net framework版本是4.5.50938


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

[TestClass] 
public class Service1Test 
{ 
    [TestMethod] 
    public void Test1() 
    {
        Assert.IsTrue(True); 
    } 
}

确保您的测试类是公共的,以便可以找到它。如果您正在引用另一个类,请确保相同

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

还有两件事: 1) 异步单元测试在最好的情况下表现得很有趣,在最坏的情况下一点也没有。看一看斯蒂芬·克利里的作品,如果你感兴趣,就不要看

2) 如果使用NUnit时遇到相同的问题,请记住NUnit的问题是
[TestCase]
,而不是
[TestMethod]


如上所述,下面是我在代码项目上发布的一篇文章,其中包括
MSTest
&
NUnit
,以防您想让它转一转,确保没有遗漏任何内容。

我注意到,为了让测试正确显示,我必须不时地做一些事情

  • 如果您的解决方案位于需要管理员访问才能进行读/写的受保护驱动器中,有时只会出现部分测试。在这种情况下,一定要以管理员身份运行VS

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

  • 有时只是重新启动VisualStudio就可以了,因为测试资源管理器将再次启动

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

  • 确保测试在测试类的
    公共
    部分


  • 我也遇到了同样的问题,而且我还记得(这种情况以前发生过),在解决方案平台菜单上选择“混合平台”和其他答案同样有效。

    如果您使用NUnit,请确保先下载NUnit适配器


    转到工具→ 扩展和更新…→ 在线 的→ 搜索“NUnit测试适配器”

    我不时会遇到这个问题。对我有效的方法是关闭Visual Studio并转到以下文件夹:

    %LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache
    
    并删除它的内容


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

    我遇到了相同的问题,但其他解决方案都不起作用。结果证明我使用的是NUnit3框架和2适配器


    如果您使用的是NUnit 3,请转到“扩展和更新”并安装NUnit3测试适配器。

    对我来说,它将“解决方案配置”更改为调试(而不是发布)。

    转到“项目”菜单>“配置管理器”检查您的测试项目平台是否与项目的其余部分匹配,并检查是否要生成然后重新生成。

    我遇到了相同的问题。 调查发现dll没有生成, 并放入正确的文件夹中。只要我改变了配置 他们出现了。 -项目生成选项,应使用哪个文件夹? -在“构建”菜单项“构建配置”中,应选中它们


    对于Visual Studio 2013.5,清除解决方案中的\TestResults目录会有所帮助。Visual Studio损坏了mdf文件,在该文件中存储了发现的测试,从而阻止了单元测试的发现。

    对于未来的Google,我有一个罕见的场景导致了这一情况


    在我的基本测试类中,我有一个名为TestContext的属性。这干扰了MSTest的reserved TestContext属性,导致我的所有测试都对VS/Resharper隐藏,只有一个测试(不是从基础继承的)。

    尝试将所有项目构建为MSIL(任何CPU),而不是x86/x64。奇怪地为我工作

    确保所有项目都以相同的配置运行。
    在您的项目属性=>调试=>下拉列表中的平台下,选择在其他项目中确定的适当平台(对我来说,它是“任何CPU”)。

    只是遇到了这个问题,我没有看到与我类似的情况

    在我的测试项目的
    .csproj
    文件中,NUnit reference privacy设置为
    False

    <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
      <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
      <Private>False</Private>
    </Reference>
    
    
    ..\packages\NUnit.2.6.4\lib\NUnit.framework.dll
    假的
    
    在我将
    设置为
    True
    后,它就工作了。

    我的问题
    public static void TestMethod1(){}