dotnet hello world
参考资料
使用 dotnet test 和 xUnit 在 .NET 中对 C# 进行单元测试
Declaring InternalsVisibleTo in the csproj
创建控制台项目
# 创建项目目录
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