1. 程式人生 > >.NET Core之單元測試(一):入門

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

目錄

  • 什麼是單元測試
  • .NET Core中的測試框架
  • 一個最基礎的單元測試
  • 我們再看看上面的程式碼

什麼是單元測試

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

單元測試除了協助本地開發,通常還放在持續整合中。每次有程式碼簽入,單元測試都會被執行。因此單元測試要保證可重複執行,不能受外界環境影響。我們在編碼設計時,可將外部依賴項通過DI容器注入。比如,我們有一個介面,依賴日誌中介軟體,資料庫等,我們就可以通過DI注入一個記憶體資料庫和Mock物件來實現。

.NET Core中的測試框架

  • xUnit
  • MSTest
  • NUnit

一個最基礎的單元測試

編寫一段程式碼,實現一個功能:判斷一個字串是否時長文字(約定長度大於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;
}

測試通過

相關推薦

.NET Core單元測試入門

目錄 什麼是單元測試 .NET Core中的測試框架 一個最基礎的單元測試 我們再看看上面的程式碼 什麼是單元測試 單元測試是對軟體中的最小可測試單元進行檢查和驗證。對於單元測試

.NET Core單元測試使用記憶體資料庫處理單元測試中的資料庫依賴

目錄 定義一個待測試API 測試用例 為減少篇幅,隱藏了SampleEntity和SqliteDbContext 定義一個待測試API 如下,我們定義了一個名為Sample的API,其中有一個外部依賴項Sqli

.NET Core單元測試Mock框架Moq的使用

編寫一個API 新增一個介面 public interface IFoo { bool Ping(string ip); } 介面實現 public class Foo : IFoo { public bool Ping(string ip) { return new

.NET Core單元測試Fluent Assertions的使用

目錄 什麼是Fluent Assertions 待測試API 測試用例 什麼是Fluent Assertions Fluent Assertions 是 .NET 平臺下的一組擴充套件方法,用於

深入淺出Android單元測試單元測試基礎

想學習單元測試無從下手,本文對以最易懂的方式介紹單元測試。 若有錯漏,煩請斧正。轉載請註明出處。歡迎關注程式引力 作者:程式引力 | 謝一 (Evan Xie) 郵箱:[email protected] 軟體測試作為軟體質量的保障,有著十分重要的意義。按照不同

JUnit自動化單元測試生成測試

廢話不多說,直接上步驟。 第一步:匯入Junit4包到專案中。 可以自己到網上下載junit4 jar包,也可以用JDE自帶junit測試工具包。以Eclipse為例 第二步,建立測試類。 現有Calcuate類,要測試其加減乘除四個方法,在

vue2.0單元測試

.com str images alt 需求 org 封裝 min 測試 1.在vue init webpack XXX創建項目的時候 最後2步選擇YES就啟動了vue單元測試開始了 2.測試是使用karma+mocha框架來實現的方法,安裝虛擬瀏覽器模塊Phanto

asp.net core 擁抱 docker 技術 概覽

測試 docker 架構 swa ima 進程 基於 概念 registry 這是一個huge 坑慢慢填吧。這裏只是一個目錄 或總覽。 docker 是什麽? docker可以看做一種虛擬機技術,但沒有傳統虛擬機那麽復雜,是基於進程的虛擬,就是讓一個一個進程,認為自己處於一

<VS2017> 編寫VC++單元測試 -新建單元測試工程

pre 菜單 運行 soft 官方 turn sof 自動 平臺 開發人員自己編寫單元測試是一個非常好的習慣。單元測試不但能夠驗證自己所編寫的代碼是否存在問題,避免提交給測試人員時才發現bug,也可以為將來改動代碼的人提供驗證代碼功能正確性的途徑。在我有限的工作生涯中並未寫

.net跨平臺mono應用——Linux系統初識

前言:最近因專案需要,開始研究.net應用的跨平臺開發。主要需求是將windows上的窗體應用在.net上部署。因為Linux系統上不支援Winform。因此暫定的解決方案是Mono+GTK#。因為在這之前我完全沒有接觸過Linux系統,也未曾瞭解過Mon

Python 基礎階段測試

1、執行 Python 指令碼的兩種方式:① 進入 Python 直譯器執行;② 通過 Python + .py 檔案的全路徑執行 Python 程式;③ 在 Linux 中還可以通過給 .py 檔案新增執行許可權並 ./*.py 的方式執行。2、簡述位、位元組的關係: 八位是一個位元組。3、簡述 ascll

.net core mvc初級教程

做一個關於.net core mvc的初級教程, 第一篇的目錄 一、建立新專案,專案名為DemoCoreStudy 二、建立類庫DemoCoreStudy.Models,在其中新增Cinema,Movie,Sales類 三、建立服務,服務註冊 第一篇為準備工程 一、建立新專案,專案名

SpringBoot 單元測試SpringBootTest

SpringBootTest 描述: 該註解是用到類名上,表示自動啟動載入類或指定某個或多個載入啟動類,預設會載入當前module下的啟動類。而啟動類(如下) @SpringBootApplication public class TestApplication {

使用Junit和Mockito對SpringBoot框架專案進行單元測試

使用Junit和Mockito對SpringBoot框架專案進行單元測試看完這篇文章你就可以輕鬆的完成基本的單元測試,使得覆蓋率達到90%以上Mockito 是流行的 Java 單元測試 Mock 框架,免費開源。Mockito 擁有的非常少的 API,所以開始使用 Mock

編寫VC++單元測試 -新建單元測試工程

開發人員自己編寫單元測試是一個非常好的習慣。單元測試不但能夠驗證自己所編寫的程式碼是否存在問題,避擴音交給測試人員時才發現bug,也可以為將來改動程式碼的人提供驗證程式碼功能正確性的途徑。在我有限的工作生涯中並未寫過太多單元測試,所以我在這方面亦存在諸多不足,所述如果有紕漏,還望各位讀者不吝指點。 單獨的單

使用.NET Core建立Windows服務 - 使用官方推薦方式

原文:Creating Windows Services In .NET Core – Part 1 – The “Microsoft” Way 作者:Dotnet Core Tutorials 譯者:Lamond Lu 譯文:使用.NET Core建立Windows服務(一) - 使用官方推薦方式

.net core 認證與授權

前言 .net core web並不是一個非常新的架構,很多文章提及到認證與授權這個過程,但是一般都會提及到裡面的方法怎麼用的,而不是模擬一個怎樣的過程,所以我打算記錄自己的理解。 什麼是認證?我們大學畢業有學士證書和畢業證書,來證明你是一個學士。 什麼是授權,比如說你被認證是我的朋友後,你可以拿著這個身份,

Python介面測試

前言 之前我們已經學會了利用JMeter工具進行介面測試,今天我們學習一下如何利用python進行介面測試。 一:傳送get請求 import requests,json url = 'http://localhost:8080/pinter/com/userList?genderType=0' req=r

在.NET Core中使用Channel

我最近一直在熟悉.net Core中引入的新Channel<T>型別。我想在它第一次釋出的時候我瞭解過它,但是有關文章非常非常少,我不能理解它們與其他佇列有什麼不同。 在使用了一段時間後,我終於看到了它們的吸引力和真正的力量。最值得注意的是大型非同步後臺操作,這些操作幾乎需要雙向通訊來同步它們正在

入門到放棄,.net構建博客系統系統構建篇

.net 通過 tro 周期 放棄 操作 images 容器 業務 demo:http://tonyblogs.top/ Git源碼:https://github.com/Halifa/TonyBlogs 項目采用的技術有:asp.net mvc4 + autofac +