如何在vscode中为c#编写单元测试

如何在vscode中为c#编写单元测试

如何从零开始创建一个单元测试工程

  1. 创建测试单元工程

创建测试文件的方法和新建项目类似,都是使用dotnet new命令。

dotnet new xunit
  1. 为测试单元工程添加需要测试的工程的项目引用
dotnet add reference ..\program\program.csproj
  1. 为sln文件添加测试单元工程的项目引用
dotnet sln add ..\program.test\program.test.csproj

文件的目录结构应大致如下树状图所示。

project/
├─program/
│	├─src/
│	└─program.csproj
├─program.test/
│	├─src/
│	└─program.test.csproj
└─program.sln
  1. 运行测试单元
dotnet test

单元测试中如何输出日志

Q:xUnit为什么没有办法直接打印输出?

A:xUnit的测试会新开一个进程进行测试,因此运行dotnet test命令的进程没有办法捕获xUnit进程的输出。

在测试代码中添加ITestOutputHelper接口,并在构造函数中将其初始化,之后使用该接口的WriteLine方法输出文本。

using Xunit;
using Xunit.Abstractions;

public class MyTestClass
{
    // 定义接口
    private readonly ITestOutputHelper output;

    public MyTestClass(ITestOutputHelper output)
    {
        // 初始化接口
        this.output = output;
    }

    [Fact]
    public void MyTest()	
    {
        var temp = "my class!";
        output.WriteLine("This is output from {0}", temp);
    }
}

在这里要注意的是,vscode中如果想要看到标准输出,需要在dotnet test命令后添加额外的参数--logger "console;verbosity=detailed",也就是运行以下命令。

dotnet test --logger "console;verbosity=detailed"

参考文章

Microsoft:使用 dotnet test 和 xUnit 在 .NET 中对 C# 进行单元测试

知乎:VSCode + xUnit 编写 C# 单元测试

xUnit:Capturing Output

博客园:终于解决 xUnit.net 测试中无法输出到控制台的问题

posted @   soryu-ryouji  阅读(191)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示