xUnit.net 是针对 .NET 的免费,开源单元测试框架,可并行测试、数据驱动测试。测试项目需引用被测试项目,从而对其进行测试,测试项目同时需要引用 xUnit。测试编写完成后,用 Test Runner 来测试项目,Test Runner 可以读取测试代码,并且知道所会使用的测试框架,然后执行,并显示结果。如下图:项目、测试项目、xUnit、Test Runner 几者关系
xUnit.net 目前支持 .Net Framework、.Net Core、.Net Standard、UWP、Xamarin ,可以在这些平台使用 xUnit 进行测试。
Test Runner 有 visual studio 本身的测试资管理器、resharper、dotnet cli 这些工具
测试类型可分为,单元测试、集成测试、皮下测试、UI测试,对于不同的测试其深度即广度也相对不一样。实际上常用的是单元测试和集成测试,xUnit.net 就属于单元测试。
接下来,通过一个案例来入门今天的主题 xUnit 单元测试,这里我们使用简单计数器的 demo 来进行讲解
首先,使用 visual studio 创建一个类库 CalculatorPro,解决方案名称为 XUnitDemo
接着创建一个 Calculator 类型,其内有个 方法 Add 用来计算两个数值进行相加,并返回计算结果
public class Calculator
{
public int Add(int x, int y)
{
return x + y;
}
}
在类库项目创建完成后,接着创建一个单元测试的项目 CalculatorProTest ,命名通常使用 项目+Test 的约定方式命名测试项目
创建完成测试项目 CalculatorProTest 后,安装 xunit、xunit.runner.visualstudio 两个 package。xunit 是编写单元测试所依赖的,xunit.runner.visualstudio 是在 visual studio 可以运行单元测试的 runner
在依赖的 package 安装完成后,就可以写单元测试了,接着创建 CalculatorTests 类,其内 ShouldAddEquals5 方法用来测试 Calculator 中的 Add 方法。
Fact 说明这个方法是个单元测试方法,sut 是个通用命名规范,Assert 用来对比结果。代码中的三步也就是单元测试所谓的 3A
public class CalculatorTests
{
[Fact]
public void ShouldAddEquals5() //注意命名规范
{
//Arrange
var sut = new Calculator(); //sut-system under test,通用命名
//Act
var result = sut.Add(3, 2);
//Assert
Assert.Equal(5, result);
}
}
在项目与测试项目创建完成后,就可以运行单元测试了。在 CalculatorTests 类中 ShouldAddEquals5 方法上,右键点击运行单元测试或者使用快捷键 ctrl + r + t ,就可以看到测试资源管理器,及单元测试运行结果。
下图可以看到 3 + 2 = 5 ,在 Assert.Equal(5, result) 就说明测试是通过的(5 是期望结果,result 是单元测试方法执行结果),在资源管理器可以看到,单元测试是通过的
可以模拟单元测试 fail 情况,将 Assert.Equal(5, result) 改为 Assert.Equal(6, result) ,即期望的结果 5 改为期望结果为 6 ,3+2 必然不 = 6,然后启动单元测试 ,可以看到单元测试是不通过的
分组依据,在测试资源管理器中,可以根项目、类、命名空间等,进行单元测试资源进行各类视图的查看。如下图
扩展:还可以通过 dotnet cli 在测试项目目录,执行单元测试命令 dotnet test ,当然还可以有许多参数,有兴趣的小伙伴可使用 help 查看学习
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_46785144/article/details/122043832
内容来源于网络,如有侵权,请联系作者删除!