【问题标题】:Visual Studio 2013 doesn't discover unit testsVisual Studio 2013 未发现单元测试
【发布时间】:2014-10-07 21:22:55
【问题描述】:

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

【问题讨论】:

  • 这些是基于异​​步的单元测试吗?
  • 不确定是什么问题,但以管理员身份运行为我解决了问题。
  • 所有基于同步的单元测试
  • 您是否尝试过外部测试运行程序(如 ReSharpers 或 NCrunch)?也许你的安装有问题(所以重新安装 VS)
  • 这些都没有为我解决这个问题:(真是一场灾难。我已经放弃了 NUnit 并依赖于 UnitTestFramework - 奇怪的是与 OP 的相反问题

标签: c# .net visual-studio unit-testing visual-studio-2013


【解决方案1】:

就我而言,问题是因为我的class 被标记为abstract

只需删除 abstract 关键字即可。

【讨论】:

  • 我的课程不是抽象的。那不是我的问题。
【解决方案2】:

另一种解决方案:

打开命令提示符,键入 set,并验证 PROCESSOR_ARCHITECTURE 是否设置正确,如果需要,更改为 x86 或 AMD64。

来源:https://connect.microsoft.com/VisualStudio/feedback/details/873170/vs2012-vstest-console-exe-error-incompatible-target-platform-settings-x86-with-system-architecture-arm-occurs-when-processor-architecture-is-not-set

【讨论】:

    【解决方案3】:

    我在 TFS 2015 上的测试遇到了同样的问题。 我遇到的问题是我的测试不再出现。测试适配器找不到任何测试。 我删除了 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的所有引用,现在它们再次出现。我希望我的回答对某人有所帮助

    【讨论】:

      【解决方案4】:

      我在 Visual Studio 2015 中遇到了与此类似的问题。一旦我进行了 async Task 单元测试,Visual Studio 就会开始在发现它、找到它的源代码时遇到问题,并且它不允许我调试它。

      事实证明,有一个bug with PostSharp 导致了这种行为,而我使用的测试项目启用了 PostSharp。

      在我的情况下,解决方案是为单元测试项目禁用 PostSharp,方法是将以下内容放在 <PropertyGroup> 元素中,并在 csproj 项目文件的开头:

      <SkipPostSharp>True</SkipPostSharp>

      【讨论】:

        【解决方案5】:

        就我而言,在驱动程序停止进入 [SetUp] 之后,我将 NUnit 从 2.X 更新到 3.X。我尝试从 NuGet 安装 NUnit 3 适配器,但没有帮助。然后我在 TestDriven (3.8) 上卸载了我当时的当前版本并安装了 3.10。它开始工作(再次)。

        【讨论】:

          【解决方案6】:

          确保项目被标记为测试项目。您可以通过将以下 xml 添加到 csproj 项目文件中来做到这一点。

           <Project>
          ...
           <ItemGroup>
              <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
            </ItemGroup>
          ...
          </Project>
          

          【讨论】:

            【解决方案7】:

            就我而言,我必须更新两个 NuGet 包。 - MSTest.TestAdapter - MSTest.TestFramework

            【讨论】:

              【解决方案8】:

              在使用 VS2008 的旧项目中遇到了同样的问题。在测试输出窗口中,它一直打印单元测试 DLL 不是 Nunit 测试。我正在使用来自https://archive.codeplex.com/?p=nunitforvs 的插件 NunitForVS,是的,我已按照说明将 ProjectTypeGuids 添加到 proj 文件中。

              原来文件夹\Users\AppData\Roaming\Nunit\中的NunitSettings.xml文件是空的。

              我从 \Users\AppData\local\Nunit\ 文件夹中复制了镜像文件,该文件夹看起来很完整,即使没有重新启动 Studio,它也开始重新发现 Nunit 测试。

              希望这对某人有所帮助。

              【讨论】:

                猜你喜欢
                • 2017-10-30
                • 2015-06-16
                • 2017-08-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-10-05
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多