如何修复:Visual Studio 社区 (Mac) 的测试板中未显示 NUnit 单元测试

How to fix: NUnit unit tests not showing up in testing pad in Visual Studio Community (Mac)

尽管将 NUnit 从 NuGet 添加到现有的 .Net Core 项目,但测试板中未显示任何单元测试。

注意:我 post 将这些图片编辑为链接,因为我对 post 图片的声誉太低了。这是怎么回事?

  1. Project > Add NuGet Packages...
  2. Selected NUnit Package (3.11.0) and clicked "Add Package"
  3. Checked to see if added to solution
  4. 在解决方案中创建了一个新的空 class 文件
  5. 为此添加了测试 class
  6. No tests show up in the test pad

我已经尝试重新启动 Visual Studio 并重新安装软件包。

我也试过删除 Project/obj 目录——还是不行。

using NUnit.Framework;
namespace ExampleLib
{
    [TestFixture]
    public class ExampleTestFixture
    {
        [Test]
        public void ExampleTest()
        {
            Assert.AreEqual(2, 2);
        }
    }
}

预期:测试填充单元测试板 实际:空测试垫。

NuGet 包只允许您使用 NUnit 框架编写测试。换句话说,这就像添加对 NUnit DLL 的引用。

您需要安装 adapter 才能查看测试。

lex-li comments, you should install the nuget version of the adapter (https://www.nuget.org/packages/NUnit3TestAdapter/3.12.0).
您将它安装到您的解决方案中,最好是用于所有测试项目。

(市场上的适配器是 vsix 适配器,它可以安装到 VS 本身 - 但不推荐这种做法,正如您指出的那样,它甚至似乎不适用于 Mac 社区版本。)

该项目有多个需求,因此 Mac 的 VS 可以识别和执行测试用例。

  1. 该项目必须是 .NET Core 的控制台应用程序。
  2. 项目必须引用 Microsoft.NET.Test.Sdk(VSTest 基础结构需要)。
  3. 项目必须有 NUnit 的引用。
  4. 项目必须引用 NUnit3TestAdapter(VSTest 基础结构需要)。

示例,

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="NUnit" Version="3.11.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.12.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
  </ItemGroup>
</Project>

请注意,用于 Windows 的 VS 和用于 Mac 的 VS(和 JetBrains Rider)都使用 VSTest 进行单元测试,因此此设置适用于所有此类 IDE。

另请注意,如果您不是从dotnet new nunit创建此控制台项目,而是一个普通的控制台应用程序模板,则需要手动删除Main方法。