首页 文章

Visual Studio 2013不会发现单元测试

提问于
浏览
142

我在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); 
    } 
}

30 回答

  • 2

    我遇到了同样的问题,我再次记得(这种情况发生在此之前),在解决方案平台菜单上选择“混合平台”,以及其他答案 .

  • 206

    我设法将我的添加为

    public static void TestMethod1(){}
    

    一旦我移除静电就开始工作....

  • 3

    转到Nuget包管理器并下载Nunit适配器,如下所示 .
    enter image description here

  • 4

    转到项目菜单> Configuration Manager检查您的测试项目平台是否与项目的其余部分匹配,然后检查构建然后重建 .

  • 3

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

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

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

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

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

    • 确保测试位于测试类的 public 部分

  • 0

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

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

  • 1

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

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

    还有两件事:1)异步单元测试充其量只是搞笑,而在最坏的情况下根本没有 . 如果感兴趣,请查看this articlethis article并保留 .

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

    说了上面的话,这是一个article我已经在代码项目上发布了 MSTestNUnit ,如果你想给它一个旋转并确保你没有遗漏任何东西 .

  • 1

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

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

  • 0

    XUnit用户可能会注意到Test Explorer窗口不再列出任何测试 . 要使测试再次被发现,请尝试this important tip,如下所示 .

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

    Type in TEMP to find target folder

  • 57

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

    %LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache
    

    并删除它的内容 .

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

  • 79

    对于未来的googlers,我有一个罕见的场景引起了这个 .

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

  • 0

    对我来说,它正在将'solution configurations'更改为Debug(而不是Release) .

  • 1

    我的问题是因为我的单元测试方法不是 void ,它正在接收参数 .

  • 0

    我发现VS Test Explorer没有发现标记为 async void 的单元测试方法 . 这似乎是因为VS无法等待测试完成并决定它是否成功 . 如果你绝对需要一个测试方法来异步运行,那么让它返回一个Task,就像 async Task 一样 . 我发现这解决了我的问题 .

  • 1

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

  • 1

    虽然AndyG的解决方案有效,但更持久的解决方案可能是将PreferredToolArchitecture环境变量设置为“x64”,或者通过以下方式:

    How to make Visual Studio use the native amd64 toolchain

    或者:

    • 控制面板|系统和安全|系统|高级系统设置|环境变量

    • PreferredToolArchitecture = x64

    • DefaultToolArchitecture = Native64Bit

    • PROCESSOR_ARCHITECTURE = x64

    • ProcessorArchitecture = x64

  • 2

    刚碰到这个以及我没有看到类似于我的类似案例 .

    在我的测试项目的 .csproj 文件中,NUnit参考隐私设置为 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>
    

    我将 <Private> 设置为 True 后就可以了 .

  • 4

    您只需要安装此软件包:

    NUnit TestAdapter
    NUnit TestAdapter

  • 0

    我有同样的问题 .

    这是由于NUnit的不兼容版本我添加到我的项目(3.2.0)和我安装的测试适配器(2.0.0) .

    要修复,请使用“工具>扩展和更新”并搜索NUnit3测试适配器,之后它会发现我的测试 .

    干杯

  • 1

    让's just say for argument'为你需要在测试项目中使用X64架构,以便正确构建依赖项(如我的情况) . 您可能需要在“测试 - 测试设置”菜单下修改默认处理器体系结构 . 将此设置为X64允许我的测试资源管理器使用Microsoft.VisualStudio.TestTools.UnitTesting查找我的测试 .

  • 11

    很抱歉添加到长列表,但我有一个完全不同的问题 . 首先,我想提一下,在测试资源管理器中单击“全部运行”,然后在Visual Studio中查看构建输出窗口时,我发现了我的问题 . 您必须主动观看它,之后消息消失 .

    至于问题,看起来在扫描测试期间,DLL被加载并且枚举了它的测试类型 . 这会导致加载引用,如果在此过程中发生任何故障,则测试将不会显示在资源管理器中 . 我有两个问题阻止成功加载测试DLL:

    • 配置文件中仍然存在绑定重定向(重定向到比测试项目中引用的版本更低版本NHiberate) .

    • 冲突的程序集引用(第二级引用无法加载) . AsmSpy是一个很好的工具来寻找这些 .

  • 1

    如果您从 network shareMy Documents directory that is part of a share 加载Visual Studio(在我的案例中为VS 2015社区)解决方案,您将遇到此问题 . 我通过将解决方案及其底层项目移动到本地文件夹来解决它 .

  • 4

    花了2天之后......以上都没有为我工作 . 唯一的“解决方案”是:转到项目属性 - >构建选项卡 . 然后单击窗格右下角的“高级”按钮 . 将“Debug Info:”更改为“full”,然后单击“确定” .

    以下是截图:
    enter image description here

    enter image description here

    enter image description here

  • 0

    我遇到了同样的问题 . 并且调查并发现dll不是构建的,而是放在右边夹 . 一旦我改变了我的配置,他们就出现了 . - Projects构建选项,应该使用哪个文件夹? - 构建菜单条目构建配置,应该检查它们 .

    为我修好了 .

  • 1

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

  • 5

    确保所有项目都使用相同的配置运行 . 在你的项目的Properties => Debug => Platform in下拉列表中选择适当的平台(对我而言,它是“任何CPU”),这在你的其他项目中确定 .

  • 2
    • 我知道如果没有构建解决方案,则找不到单元测试,因此需要尝试(构建解决方案),但该解决方案就像帮助台询问您的计算机是否已插入...

    • 干净的重建后没有为我解决问题,运行完整的批量生成确实修复了它 .

  • 0

    有同样的问题;测试突然停止被发现 .

    Nunit测试适配器已经以某种方式被禁用 . 单击扩展管理器中的启用为我修复了它 .

  • 12

    要在Test Explorer窗口中显示测试,我必须安装NUnit3 Test Adapter 3.0,这在包管理器中是不可用的 .

    https://visualstudiogallery.msdn.microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d下载

  • 28

    我遇到了同样的问题,直到我意识到我做了一个剪切/粘贴错误并在测试之前离开 [Test Method] .

相关问题