参考资料
dotnet 命令参考
使用 dotnet test 和 xUnit 在 .NET 中对 C# 进行单元测试
Declaring InternalsVisibleTo in the csproj
XUnit输出消息
创建控制台项目
# 创建项目目录
md DotnetStudy
cd DotnetStudy# 创建解决方案
dotnet new sln
# 创建控制台项目,-n: 名称,--use-program-main: 不适用顶级语句
dotnet new console -n HelloDotnet --use-program-main
# 将项目添加到解决方案
dotnet sln add HelloDotnet\HelloDotnet.csproj
# 编译
dotnet build --configuration Release
# 运行
dotnet run --configuration Release --project HelloDotnet\HelloDotnet.csproj
添加一个类
namespace HelloDotnet
{internal class Calc{public int Add(int a, int b){return a + b;}}
}
添加单元测试项目
# 创建 xunit 项目
dotnet new xunit -o HelloDotnet.Tests
# 将 xunit 项目添加到解决方案
dotnet sln add HelloDotnet.Tests\HelloDotnet.Tests.csproj
# 将控制台项目作为依赖添加到 xunit 项目
dotnet add HelloDotnet.Tests\HelloDotnet.Tests.csproj reference HelloDotnet\HelloDotnet.csproj
设置单元测试可访问 internal
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net8.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup><!-- 设置单元测试可访问 internal --><ItemGroup><AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute"><_Parameter1>HelloDotnet.Tests</_Parameter1></AssemblyAttribute></ItemGroup>
</Project>
单元测试代码
namespace HelloDotnet.Tests;public class UnitTest1
{[Fact]public void Test1(){Calc calc = new();Assert.Equal(3, calc.Add(1, 2));}
}
运行单元测试
dotnet test HelloDotnet.Tests\HelloDotnet.Tests.csproj
关于单元测试的输出
using Xunit.Abstractions;namespace HelloDotnet.Tests;public class UnitTest1
{ITestOutputHelper output;public UnitTest1(ITestOutputHelper output){this.output = output;}[Fact]public void Test1(){output.WriteLine("add test");Calc calc = new();Assert.Equal(3, calc.Add(1, 2));}
}
gitignore
dotnet new gitignore