C# 使用NUnit进行单元测试

写在前面

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

 与预期一致,单元测试通过

相关推荐

  1. 单元测试Nunit的几种断言

    2023-12-21 12:04:06       54 阅读
  2. C++】使用gtest做单元测试框架写单元测试

    2023-12-21 12:04:06       23 阅读
  3. 如何进行单元测试以及使用过的测试框架

    2023-12-21 12:04:06       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 12:04:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 12:04:06       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 12:04:06       87 阅读
  4. Python语言-面向对象

    2023-12-21 12:04:06       96 阅读

热门阅读

  1. Qt6.3 学习笔记

    2023-12-21 12:04:06       53 阅读
  2. Qt的QDir类的使用示例

    2023-12-21 12:04:06       53 阅读
  3. Nginx生成自签名证书从而添加域名的HTTPS访问

    2023-12-21 12:04:06       68 阅读
  4. QT 5.14.2 Android环境搭建问题解决

    2023-12-21 12:04:06       63 阅读
  5. log4j2 与 logback 条件判断

    2023-12-21 12:04:06       49 阅读
  6. Zookeeper-快速入门、服务搭建、集群搭建教程

    2023-12-21 12:04:06       60 阅读
  7. 打印⾃幂数

    2023-12-21 12:04:06       51 阅读
  8. Spring和Spring Boot的主要区别

    2023-12-21 12:04:06       55 阅读
  9. Linux中systemctl使用

    2023-12-21 12:04:06       63 阅读