日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

使用C#为MSTest测试项目实现自定义断言

發(fā)布時間:2023/12/4 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用C#为MSTest测试项目实现自定义断言 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

MSTest測試項目為我們實現(xiàn)了斷言類Assert,用于報告代碼行為的正確性,比如:

var?result?=?Calculator.Add(1,2); Assert.AreEqual(3,?result);

雖然常用的斷言方法已經(jīng)可以工作。

但是,我們更希望使用自定義斷言,這樣可以讓我們的測試更易讀。

實現(xiàn)

要為MSTest編寫自定義斷言,我們只要為Assert類編寫擴(kuò)展方法。

反編譯Assert類的源代碼,可以看到斷言失敗是通過拋出AssertFailedException來指示測試用例失敗:

//?Microsoft.VisualStudio.TestTools.UnitTesting.Assert using?System.Globalization;internal?static?void?HandleFail(string?assertionName,?string?message,?params?object[]?parameters) {string?text?=?string.Empty;if?(!string.IsNullOrEmpty(message)){text?=?((parameters?!=?null)???string.Format(CultureInfo.CurrentCulture,?ReplaceNulls(message),?parameters)?:?ReplaceNulls(message));}throw?new?AssertFailedException(string.Format(CultureInfo.CurrentCulture,?FrameworkMessages.AssertionFailed,?new?object[2]?{?assertionName,?text?})); }

我們可以依葫蘆畫瓢。

例如,實現(xiàn)斷言IsType<T>,用于驗證對象是否正是給定的類型:

internal?static?class?AssertExtensions {public?static?void?IsType<T>(this?Assert?assert,?object?obj){if?(obj?is?T){return;}throw?new?AssertFailedException($@"Assert.That.IsType失敗。不是指定的類型{typeof(T)}");} }

使用

Assert類提供了That屬性,可以獲取Assert類的實例。

因此,只需在測試用例中用Assert.That訪問擴(kuò)展方法即可:

[TestMethod] public?void?TestMethod1() {Assert.That.IsType<Class1>("My?IO"); }

結(jié)論

Assert.That屬性好像只有MSTest測試項目提供,沒法為其它測試項目實現(xiàn)自定義斷言。

如果你有實現(xiàn)方案,歡迎到公眾號后臺留言交流!

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的使用C#为MSTest测试项目实现自定义断言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。