.NET Core之單元測試(一):入門


什么是單元測試

單元測試是對軟件中的最小可測試單元進行檢查和驗證。對於單元測試,要保證測試粒度足夠小,才能准確定位問題。通常而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函數的行為。執行單元測試,是為了證明某段代碼的行為確實和開發者所期望的一致。我們在編寫測試代碼時,應該要保證代碼的自動執行,並非交互式的,保證測試用例的自動執行,不需要對測試結果進行人工驗證。

單元測試除了協助本地開發,通常還放在持續集成中。每次有代碼簽入,單元測試都會被執行。因此單元測試要保證可重復執行,不能受外界環境影響。我們在編碼設計時,可將外部依賴項通過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;
}

測試通過
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM