写在前面
NUnit是一个开源的.Net单元测试框架,经常被用来在.Net体系下做白盒测试。
NUnit.org · GitHub
本文记录一个简单的使用NUnit进行单元测试的完整流程。
代码实现
新建一个目标类库NUnitTester,添加待测试的类文件,内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NUnitTester
{
public class DataChecker
{
public bool IsPrime(int candidate)
{
if (candidate == 1)
{
return true;
}
return false;
}
}
}
在目标类库的父目录下建立一个空的文件夹,命名为NUnitTester.Tests,进入该目录用命令行窗口执行:
dotnet new nunit
完成后再执行:
dotnet add reference ../NUnitTester/NUnitTester.csproj
添加目标类库的引用
修改单元测试类,编辑好测试用例方法
namespace NUnitTester.Tests;
[TestFixture]
public class Tests
{
private DataChecker _dataChecker;
[SetUp]
public void Setup()
{
_dataChecker = new DataChecker();
}
[Test]
public void Test1()
{
// 跳过
Assert.Pass();
}
[TestCase(-1)]
[TestCase(1)]
public void IsValidValue(int value)
{
var isValid = _dataChecker.IsPrime(value);
Assert.IsTrue(isValid, $"{value} {(isValid ? "":"不")}是合法的数值");
Assert.IsFalse(isValid, $"{value} {(isValid ? "" : "不")}是合法的数值");
//Assert.That(isValid, Is.False, $"{value} 不是合法数值");
}
}
[TestFixture]
属性表示包含单元测试的类。 [Test]
属性指示方法是测试方法。
其中[TestCase]
属性用于创建一套可执行相同代码但具有不同输入参数的测试。 可以使用 [TestCase]
属性来指定这些输入的值。
执行结果
编辑好测试用例后,在测试项目目录下,使用命令窗口执行:
dotnet test
与预期一致,单元测试通过