使用C#为MSTest测试项目实现自定义断言
生活随笔
收集整理的這篇文章主要介紹了
使用C#为MSTest测试项目实现自定义断言
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
MSTest測試項目為我們實現了斷言類Assert,用于報告代碼行為的正確性,比如:
var?result?=?Calculator.Add(1,2); Assert.AreEqual(3,?result);雖然常用的斷言方法已經可以工作。
但是,我們更希望使用自定義斷言,這樣可以讓我們的測試更易讀。
實現
要為MSTest編寫自定義斷言,我們只要為Assert類編寫擴展方法。
反編譯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?})); }我們可以依葫蘆畫瓢。
例如,實現斷言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訪問擴展方法即可:
[TestMethod] public?void?TestMethod1() {Assert.That.IsType<Class1>("My?IO"); }結論
Assert.That屬性好像只有MSTest測試項目提供,沒法為其它測試項目實現自定義斷言。
如果你有實現方案,歡迎到公眾號后臺留言交流!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的使用C#为MSTest测试项目实现自定义断言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 6 中 gRPC 的新功能
- 下一篇: 使用 CliWrap 让C#中的命令行交