如何修复: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 图片的声誉太低了。这是怎么回事?
- Project > Add NuGet Packages...
- Selected NUnit Package (3.11.0) and clicked "Add Package"
- Checked to see if added to solution
- 在解决方案中创建了一个新的空 class 文件
- 为此添加了测试 class
- 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 可以识别和执行测试用例。
- 该项目必须是 .NET Core 的控制台应用程序。
- 项目必须引用
Microsoft.NET.Test.Sdk
(VSTest 基础结构需要)。
- 项目必须有
NUnit
的引用。
- 项目必须引用
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
方法。
尽管将 NUnit 从 NuGet 添加到现有的 .Net Core 项目,但测试板中未显示任何单元测试。
注意:我 post 将这些图片编辑为链接,因为我对 post 图片的声誉太低了。这是怎么回事?
- Project > Add NuGet Packages...
- Selected NUnit Package (3.11.0) and clicked "Add Package"
- Checked to see if added to solution
- 在解决方案中创建了一个新的空 class 文件
- 为此添加了测试 class
- 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 可以识别和执行测试用例。
- 该项目必须是 .NET Core 的控制台应用程序。
- 项目必须引用
Microsoft.NET.Test.Sdk
(VSTest 基础结构需要)。 - 项目必须有
NUnit
的引用。 - 项目必须引用
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
方法。