精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 xUnit 快速編寫 .NET 應用單元測試

開發 測試
單元測試能夠在開發階段快速發現邏輯錯誤或邊界條件問題。今天大姚將帶領大家使用 xUnit 快速編寫 .NET 應用單元測試。

在當今快速迭代的軟件開發環境中,單元測試已成為保障代碼質量和項目可靠性的重要基石,通過驗證程序最小單元(如函數、方法、類等)的獨立行為,能夠在開發階段快速發現邏輯錯誤或邊界條件問題。今天大姚將帶領大家使用 xUnit 快速編寫 .NET 應用單元測試。

項目介紹

xUnit 是一個開源、免費、以社區為中心的 .NET 單元測試框架,是用于 C# 和 F#(其他 .NET 語言可能也能運行,但未提供官方支持)進行單元測試的最新技術。xUnit 能夠與 Visual Studio、Visual Studio Code、ReSharper、CodeRush 和 TestDriven.NET 兼容。它是.NET 基金會的一部分,并遵循其行為準則。

單元測試優秀做法

微軟官方出品的 .NET 單元測試最佳做法:https://learn.microsoft.com/zh-cn/dotnet/core/testing/unit-testing-best-practices

(1) 避免基礎結構依賴項。

(2) 以最精簡方式編寫通過測試。

(3) 避免使用魔法字符串。

(4) 避免在單元測試中編寫代碼邏輯。

(5) 遵循測試命名標準:

  • 要測試的方法的名稱。
  • 測試方法的情境。
  • 調用方案時的預期行為。

命名標準非常重要,因為它們有助于表達測試目的和應用程序。測試不僅僅是確保代碼正常工作。它們還提供文檔。只需查看單元測試套件,即可推斷代碼的行為,不必查看代碼本身。此外,測試失敗時,可以確切地看到哪些方案不符合預期。

單元測試基本步驟

我們在編寫單元測試的時候通常遵循 3A 模式(Arrange-Act-Assert),這是單元測試的核心方法論:

  • Arrange(準備階段): 該階段用于模擬數據、初始化對象等準備工作。
  • Act(執行階段): 該階段用于準備好的數據調用要測試的最小單元方法。
  • Assert(斷言階段): 該階段是單元測試中的驗證環節,它通過將目標方法返回的實際結果與預期結果進行比對,來判定測試是否通過。

創建單元測試項目

因為 xUnit 框架與 Visual Studio 是兼容的,我們可以直接在 Visual Studio 中搜索:xUnit 測試項目 模板,然后創建一個名為:xUnitExercise 的 .NET 9 單元測試項目。

編寫簡單的單元測試

public class UnitTest
    {
        /// <summary>
        /// 測試 Calculator 的 Add 方法功能
        /// 驗證兩個正數相加返回正確的和
        /// </summary>
        [Fact]// 標識這是一個獨立的測試用例
        public void Add_TwoPositiveNumbers_ReturnsCorrectSum()
        {
            // ===== Arrange(準備階段) =====
            var calculator = new Calculator();
            int num1 = 5;
            int num2 = 7;
            int expected = 12;

            // ===== Act(執行階段) =====
            int actual = calculator.Add(num1, num2);

            // ===== Assert(斷言階段) =====
            Assert.Equal(expected, actual);
        }

        /// <summary>
        /// 測試 Calculator 的 Divide 方法異常處理
        /// 驗證除數為零時正確拋出 DivideByZeroException 異常
        /// </summary>
        [Fact]
        public void Divide_ByZero_ThrowsDivideByZeroException()
        {
            // Arrange
            var calculator = new Calculator();
            int dividend = 10;
            int divisor = 0; //觸發異常的除數

            // Act & Assert
            // 驗證執行除法時是否拋出特定異常
            var exception = Assert.Throws<DivideByZeroException>(
                () => calculator.Divide(dividend, divisor));

            // 驗證異常消息是否符合預期
            Assert.Equal("除數不能為零", exception.Message);
        }

        /// <summary>
        /// 參數化測試 Calculator 的 IsEven 方法功能
        /// 驗證不同輸入數值的奇偶判斷是否正確
        /// </summary>
        /// <param name="number">測試輸入值</param>
        /// <param name="expected">預期結果(true=偶數,false=奇數)</param>
        [Theory] // 標識這是一個參數化測試
        [InlineData(4, true)]   // 測試數據1:偶數4,預期true
        [InlineData(7, false)]  // 測試數據2:奇數7,預期false
        [InlineData(8, false)]  // 測試數據3:偶數8,預期false 【這里是特意為了查看預期結果不一致的情況】
        public void IsEven_Number_ReturnsCorrectResult(int number, bool expected)
        {
            // Arrange
            var calculator = new Calculator();

            // Act
            bool actual = calculator.IsEven(number);

            // Assert
            Assert.Equal(expected, actual);
        }

        public class Calculator
        {
            public int Add(int a, int b)
            {
                return a + b;
            }

            public bool IsEven(int number)
            {
                return number % 2 == 0;
            }

            public double Divide(int dividend, int divisor)
            {
                if (divisor == 0)
                    throw new DivideByZeroException("除數不能為零");

                return (double)dividend / divisor;
            }
        }
    }

運行單元測試

選擇項目右鍵 => 運行測試:

或者直接在對應的方法正上方選擇 Run:

調試單元測試

選擇項目右鍵 => 運行調試:

或者直接在對應的方法正上方選擇 Debug:

項目源碼地址

更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。

  • GitHub開源地址:https://github.com/xunit/xunit
  • 本文示例源碼地址:https://github.com/YSGStudyHards/DotNetExercises/tree/master/xUnitExercise
責任編輯:趙寧寧 來源: 追逐時光者
相關推薦

2023-10-07 08:49:56

測試驅動開發Xunit 框架

2017-01-16 12:12:29

單元測試JUnit

2017-01-14 23:26:17

單元測試JUnit測試

2009-07-23 16:29:06

ASP.NET單元測試

2022-04-08 09:01:56

腳本Go應用單元

2017-01-14 23:42:49

單元測試框架軟件測試

2009-07-24 11:33:12

MVC單元測試ASP.NET

2024-10-28 08:07:17

2017-03-23 16:02:10

Mock技術單元測試

2023-07-26 08:58:45

Golang單元測試

2012-05-17 09:09:05

Titanium單元測試

2013-06-04 09:49:04

Spring單元測試軟件測試

2011-07-27 13:39:28

iOS GH-Unit 單元測試

2025-07-07 07:44:27

2021-03-28 23:03:50

Python程序員編碼

2024-10-16 16:09:32

2010-03-04 15:40:14

Python單元測試

2009-07-23 16:14:03

.NET測試工具NUnit2.5

2020-08-18 08:10:02

單元測試Java

2019-01-29 09:00:44

PyHamcrest單元測試框架
點贊
收藏

51CTO技術棧公眾號

国产又粗又爽又黄的视频| 日本中文字幕不卡免费| 在线观看日本一区二区| 国产一二区在线| 不卡视频一二三四| 国产成人精品久久亚洲高清不卡| 美国一级黄色录像| 亚洲精品影片| 在线观看精品一区| 免费的av在线| 国产三级在线观看| 国产高清久久久| 日本一区二区在线播放| 欧洲美女女同性互添| 欧洲亚洲视频| 欧美一区二区三区四区久久 | 国产视频中文字幕在线观看| www.欧美亚洲| 91理论片午午论夜理片久久| 一级黄色免费网站| 欧美久久99| 一区二区在线视频| 一级特级黄色片| 精品一区视频| 欧美日韩免费在线视频| 成人在线免费在线观看| 在线三级中文| 国产精品久久久久四虎| 欧美激情一区二区三区在线视频| 国产男男gay体育生网站| 久久午夜视频| 2019亚洲男人天堂| 国产亚洲精品久久久久久无几年桃 | 中文字幕在线有码| 日本a级不卡| 日韩av在线资源| 热久久精品国产| 韩国成人二区| 亚洲一区二区偷拍精品| 亚洲国产日韩综合一区| 外国精品视频在线观看| 久久国产精品第一页| 5278欧美一区二区三区| 精品国产欧美日韩不卡在线观看| 奇米色欧美一区二区三区| 日韩欧美电影在线| 九九热免费在线观看| 9999在线视频| 亚洲综合色噜噜狠狠| 伊人久久青草| 99reav在线| 国产人妖乱国产精品人妖| 国产日韩在线一区二区三区| 国产免费黄色录像| 久久国产精品72免费观看| 国产国语刺激对白av不卡| 久久久久久久久久免费视频| 红桃视频亚洲| 欧美大秀在线观看| 男人晚上看的视频| 日韩国产欧美| 一区二区欧美日韩视频| 少妇特黄一区二区三区| 老司机精品在线| 欧美一卡二卡三卡四卡| 一级片视频免费观看| 中文在线а√天堂| 欧美性高潮在线| 精品一卡二卡三卡| 国产高清不卡| 91福利国产精品| 999香蕉视频| 亚洲精品.com| 欧美日韩在线播放一区| 精品久久久久久中文字幕2017| 乱馆动漫1~6集在线观看| 亚洲一区二区偷拍精品| av免费观看大全| 国产在线88av| 在线观看av一区二区| 国产精彩免费视频| jizz亚洲女人高潮大叫| 欧美午夜激情在线| 青青草成人免费在线视频| 欧美卡一卡二| 精品国产精品三级精品av网址| 欧美激情 国产精品| 欧美片第1页| 欧美在线制服丝袜| 亚洲高清免费在线观看| 中文成人在线| 日韩欧美国产一区二区三区| 国内精品免费视频| 日韩系列在线| 中文字幕日韩免费视频| 国产一二三四区| 精品69视频一区二区三区Q| 97激碰免费视频| 特黄视频免费看| 久久99精品久久久久久| 99一区二区| 日韩黄色影片| 综合分类小说区另类春色亚洲小说欧美| 国产精品波多野结衣| 金瓶狂野欧美性猛交xxxx| 一本久久综合亚洲鲁鲁五月天| 免费涩涩18网站入口| 国产成人久久精品一区二区三区| 精品国产精品网麻豆系列| 法国伦理少妇愉情| 色乱码一区二区三区网站| 久久国产精品久久精品| 欧美日韩综合在线观看| 蜜桃av一区二区三区电影| 91久久国产精品91久久性色| 色偷偷在线观看| 中文字幕av不卡| 成人黄色大片网站| 99亚洲伊人久久精品影院| 欧美电影精品一区二区| 色欲AV无码精品一区二区久久| 中文在线日韩| 国产精品大片wwwwww| 亚洲av无码乱码在线观看性色| 国产婷婷色一区二区三区四区| 超级碰在线观看| 国产精品毛片久久久久久久久久99999999| 欧美丰满一区二区免费视频| 精品国产人妻一区二区三区| 欧美精品日本| 91精品久久久久久久久青青| 四虎在线观看| 一区二区在线免费观看| 色悠悠久久综合网| 青草久久视频| 欧美精品久久久久久久久久| ,一级淫片a看免费| 久久久久久亚洲综合影院红桃 | 亚洲欧美日韩一二三区| 国产欧美日韩精品一区二区三区 | 日产精品久久久一区二区| 黄色成人在线网| 91精品国产综合久久精品麻豆| 欧美特级黄色录像| 亚洲免费成人| 国产不卡一区二区在线观看| 久操免费在线| 一本久道中文字幕精品亚洲嫩| www.88av| 极品少妇一区二区三区| 99精彩视频| xvideos国产在线视频| 欧美亚洲动漫制服丝袜| 香蕉网在线播放| 日韩午夜电影| 国新精品乱码一区二区三区18| 影音先锋男人资源在线| 欧美一区二区免费| 欧美一级特黄高清视频| 理论片日本一区| 亚洲精品一卡二卡三卡四卡| 久久久成人av毛片免费观看| 亚洲男人的天堂在线| 国产一级精品视频| av福利精品导航| 国产午夜福利在线播放| 美女av一区| 欧美激情va永久在线播放| 精品久久久久久亚洲综合网站| 亚洲视频在线一区| 国产大片一区二区三区| 久久久久电影| 91精品视频大全| 国产福利视频在线| 精品少妇一区二区| 日本一级淫片免费放| 99久久99久久免费精品蜜臀| 国产二区视频在线播放| 国产乱人伦丫前精品视频| 欧美亚洲国产日本| 九九九伊在人线综合| 欧美午夜片在线看| 午夜三级在线观看| 国产乱理伦片在线观看夜一区 | 欧美午夜一区| 韩国成人动漫在线观看| 欧美色网在线| 久久天天躁狠狠躁夜夜躁 | 伊人久久在线| 一个色综合导航| 国产99对白在线播放| 亚洲一线二线三线久久久| 少妇激情一区二区三区视频| 西西人体一区二区| 欧美成人免费在线| 99久久久国产精品免费调教网站| 久久人人爽人人爽人人片亚洲| 精品久久人妻av中文字幕| 午夜婷婷国产麻豆精品| 国产123在线| 国产福利视频一区二区三区| 18禁免费无码无遮挡不卡网站| 日韩国产在线| 国产一区二区中文字幕免费看| 深夜成人影院| 蜜臀久久99精品久久久无需会员 | 成人精品国产一区二区4080| 韩国日本在线视频| 欧美电影免费观看高清| 成人动漫在线视频| 成人香蕉视频| 欧美裸体男粗大视频在线观看| 亚洲av成人无码久久精品老人| 欧美色视频在线| 国产精彩视频在线| xnxx国产精品| 午夜精品久久久久久久99热影院| 伊人久久亚洲美女图片| 先锋影音欧美| 加勒比视频一区| 成人福利网站在线观看| 日本在线播放一二三区| 久久在线免费观看视频| 精品欧美不卡一区二区在线观看 | 国内成人自拍| 91黄在线观看| www.精品国产| 欧美在线不卡区| 污污的网站在线看| 色婷婷久久一区二区| 天堂av在线播放| 欧美一级电影网站| 欧美人一级淫片a免费播放| 亚洲国产欧美一区二区三区丁香婷| 成人信息集中地| 国产亚洲短视频| 久久国产精品无码一级毛片| 国产精品一区二区三区99| 精品久久久噜噜噜噜久久图片 | 日韩少妇裸体做爰视频| 一区二区三区中文字幕在线观看| 国产日产在线观看| 国产亚洲成av人在线观看导航| www男人天堂| 国产盗摄视频一区二区三区| 182午夜在线观看| 日韩高清电影一区| 男人操女人免费| 国产模特精品视频久久久久| 国产精品一色哟哟| 99精品视频在线观看播放| 清纯唯美一区二区三区| 久久99性xxx老妇胖精品| 久久国产一区| 色哟哟精品丝袜一区二区| 国产精品一区二区三区在线| 538任你躁精品视频网免费| 国产精品自产拍在线观| 成人精品国产| 国产免费一区二区三区在线能观看| 深夜视频一区二区| 国产精品久久婷婷六月丁香| 欧美中文字幕精在线不卡| 国产精品r级在线| 自拍网站在线观看| 国产精品日韩精品| 欧美激情福利| 91亚洲国产精品| 秋霞一区二区| 国产精品白丝jk白祙| 成午夜精品一区二区三区软件| 国产99在线免费| 欧美18免费视频| 欧美精品一区二区视频| 午夜先锋成人动漫在线| 欧美一区少妇| 久久精品国产68国产精品亚洲| 亚洲一区二区三区色| 天天操夜夜操国产精品| 国产免费xxx| 亚洲人成高清| 天天影视综合色| 国产麻豆欧美日韩一区| 亚洲欧美高清在线| 成人午夜电影久久影院| 在线a免费观看| 99国产精品国产精品久久| 久久精品国产亚洲AV熟女| 欧美韩国日本不卡| 成人免费毛片xxx| 亚洲大片在线观看| 免费黄色网址在线| 欧美久久久久久久久久| 精品人妻久久久久一区二区三区| 精品国产青草久久久久福利| 无码精品视频一区二区三区| 这里只有精品丝袜| 日本三级在线观看网站| 欧美最猛性xxxxx免费| 成人精品高清在线视频| 99精品国产一区二区| 日韩三级av| 中国成人在线视频| 亚洲大片在线| 99免费视频观看| www.亚洲精品| 色噜噜噜噜噜噜| 亚洲一区二区三区中文字幕| 国产一区二区视频网站| 欧美一区二区三区不卡| 精品久久久久一区二区三区| 美女性感视频久久久| 日韩欧美看国产| av一区二区三区四区电影| 亚洲人成网www| 欧美日韩不卡在线视频| 美日韩一区二区| 久久久国产精品无码| 亚洲丝袜另类动漫二区| av大全在线观看| 日韩欧美国产一二三区| 在线免费观看黄| 51ⅴ精品国产91久久久久久| 99久久久国产| 欧美激情视频一区二区三区| 国产欧美精品| 中国老熟女重囗味hdxx| 欧美激情一区二区三区全黄| 成人午夜视频精品一区| 日韩一区二区三区免费看 | 久久天堂影院| 久久99精品久久久久久秒播放器 | 亚洲黄色小说视频| 亚洲宅男天堂在线观看无病毒| 亚洲熟妇无码久久精品| 亚洲欧美国产一本综合首页| av免费看在线| 欧美一级视频在线观看| 高清一区二区三区| 中国黄色录像片| 狠狠狠色丁香婷婷综合久久五月| 亚洲高潮女人毛茸茸| 色婷婷精品久久二区二区蜜臂av| 日日夜夜精品免费| 欧美高清videos高潮hd| 福利一区二区三区视频在线观看| 欧美精品久久久| 免费国产自线拍一欧美视频| 无码任你躁久久久久久老妇| 亚洲激情成人在线| 国产美女精品视频国产| 日韩在线观看免费av| 国产精品亚洲成在人线| 少妇免费毛片久久久久久久久| 模特精品在线| 日本精品久久久久中文| 欧美日韩一二三| 1区2区3区在线观看| 国产精品香蕉国产| 欧美中文字幕一区二区| 999精品视频在线| 欧美韩国日本综合| 91视频在线视频| 中文字幕精品在线| 久久爱.com| 中文字幕超清在线免费观看| 国产乱码字幕精品高清av| 久久精品黄色片| 欧美成va人片在线观看| 蜜臀av在线播放| 99中文字幕| 亚洲国产国产亚洲一二三| 黄色激情在线观看| 精品国产成人av| 国产三级视频在线| 成人h片在线播放免费网站| 一区二区电影在线观看| 欧美69精品久久久久久不卡| 亚洲人成网站精品片在线观看| 国产视频在线观看免费 | 久久精品视频在线观看免费| 亚洲激情第一区| 在线观看xxx| 18性欧美xxxⅹ性满足| 色婷婷亚洲mv天堂mv在影片| 日本成人xxx| 精品久久久久久久久久ntr影视| 免费a在线观看| 成人在线小视频| 亚洲成人在线| 日韩黄色中文字幕| 精品国产露脸精彩对白| 全亚洲第一av番号网站| 一区二区免费在线观看| 成人免费毛片aaaaa**| 99久久久久久久久| 精品久久久av| 好吊妞国产欧美日韩免费观看网站| av天堂永久资源网| 国产精品福利一区|