写在前面
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
与预期一致,单元测试通过