.NET Core之单元测试(一):入门

什么是单元测试

单元测试是对软件中的最小可测试单元进行检查和验证。对于单元测试,要保证测试粒度足够小,才能准肯定位问题。一般而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。执行单元测试,是为了证实某段代码的行为确实和开发者所指望的一致。咱们在编写测试代码时,应该要保证代码的自动执行,并不是交互式的,保证测试用例的自动执行,不须要对测试结果进行人工验证。github

单元测试除了协助本地开发,一般还放在持续集成中。每次有代码签入,单元测试都会被执行。所以单元测试要保证可重复执行,不能受外界环境影响。咱们在编码设计时,可将外部依赖项经过DI容器注入。好比,咱们有一个接口,依赖日志中间件,数据库等,咱们就能够经过DI注入一个内存数据库和Mock对象来实现。数据库

.NET Core中的测试框架

一个最基础的单元测试

编写一段代码,实现一个功能:判断一个字符串是否时长文本(约定长度大于6即为长文本)框架

public class UnitTestSample
{
    public static bool IsStringLong(string val)
    {
        return val.Length > 6;
    }
}

咱们如今编写一个单元测试,测试长文本
本测试用例使用xUnit函数

Install-Package xunit -Version 2.4.1单元测试

测试方法名建议:待测试方法名+预期结果+参数测试

using Xunit;
public class UnitTestSampleTest
{
    [Fact]
    public void IsStringLong_ReturnTrue_WithExpectedParameters()
    {
        // Arrange
        string val = "1234567";

        // Act
        var actual = UnitTestSample.IsStringLong(val);

        // Assert
        Assert.True(actual);
    }
}

若是你使用的Visual Studio进行开发,你能够选择开启Live Unit Testing
在这里插入图片描述
当你编写完测试代码后,Visual Studio会自动运行测试,以下(经过测试的代码会有一个勾):
在这里插入图片描述编码

固然,你也能够打开测试资源管理器运行测试
在这里插入图片描述
在这里插入图片描述设计

咱们再看看上面的代码

上面咱们只对正常状况下进行了测试,若是咱们传入null值呢?对于null值,其实咱们是指望返回false,咱们编写如下测试代码日志

[Fact]
public void IsStringLong_ReturnTrue_WithNullParameters()
{
    // Arrange
    string val = null;

    // Act
    var actual = UnitTestSample.IsStringLong(val);

    // Assert
    Assert.False(actual);
}

咱们发现测试未经过:
在这里插入图片描述

查看测试结果发现产生了一个System.NullReferenceException异常
在这里插入图片描述
咱们看前面编写的功能代码,发现return val.Length > 6并无对null值进行处理,如今修改此代码:

public static bool IsStringLong(string val)
{
    return val?.Length > 6;
}

测试经过
在这里插入图片描述

相关文章
相关标签/搜索