如何在vscode中为c#编写单元测试
从零开始创建一个单元测试工程
- 创建测试单元工程
创建测试文件的方法和新建项目类似,都是使用dotnet new
命令。
dotnet new xunit
- 为测试单元工程添加需要测试的工程的项目引用
dotnet add reference ..\MyMath\MyMath.csproj
文件的目录结构应大致如下树状图所示。
project/
├─program/
│ ├─src/
│ └─program.csproj
└─program.test/
├─src/
└─program.test.csproj
- 运行测试单元
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# 进行单元测试
博客园:终于解决 xUnit.net 测试中无法输出到控制台的问题
标签:c#,单元测试,vscode,test,测试,xUnit,dotnet,output From: https://www.cnblogs.com/hellofriland/p/18115858