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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?