.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;
}

測試經過
在這裏插入圖片描述

相關文章
相關標籤/搜索