C#建立測(cè)試用例系統(tǒng)的示例代碼
引言
很多時(shí)候,需要對(duì)類中的方法進(jìn)行一些測(cè)試,來判斷是否能按要求輸出預(yù)期的結(jié)果。
C#提供了快速創(chuàng)建單元測(cè)試的方法,但單元測(cè)試不僅速度慢不方便,大量的單元測(cè)試還會(huì)拖慢項(xiàng)目的啟動(dòng)速度。
所以決定自己搞個(gè)方便的測(cè)試用例。
控制臺(tái)調(diào)用
只需要簡(jiǎn)簡(jiǎn)單單的一句話
測(cè)試用例.注冊(cè)并Print(EnumEx.Name);
結(jié)果畫面
測(cè)試用例的實(shí)現(xiàn)
/// <summary> /// 提供測(cè)試用例的注冊(cè)和運(yùn)行功能,用來比對(duì)結(jié)果和預(yù)期值是否相同,向控制臺(tái)輸出結(jié)果。 /// </summary> public class 測(cè)試用例 { /// <summary> /// 測(cè)試的方法 /// </summary> public Func<string> 方法 { get; set; } /// <summary> /// 測(cè)試名稱 /// </summary> public string 名稱 { get; set; } /// <summary> /// 期望得到的結(jié)果string /// </summary> public string 期望值 { get; set; } /// <summary> /// 新建一個(gè)測(cè)試 /// </summary> /// <param name="v名稱">測(cè)試名稱</param> /// <param name="v期望值">期望得到的結(jié)果string</param> /// <param name="v方法">測(cè)試的方法</param> public 測(cè)試用例(string v名稱, string v期望值, Func<string> v方法) { 名稱 = v名稱; 期望值 = v期望值; 方法 = v方法; } /// <summary> /// 儲(chǔ)存所有注冊(cè)的方法。 /// </summary> public static OrderedDictionary<string, 測(cè)試用例> 方法冊(cè) = new OrderedDictionary<string, 測(cè)試用例>(); /// <summary> /// 將「返回值為string的方法〈Func<string>〉」注冊(cè)到「方法冊(cè)」中。 /// </summary> /// <param name="測(cè)試用例">要注冊(cè)的測(cè)試</param> /// <returns>返回是否注冊(cè)成功</returns> public static bool 注冊(cè)(測(cè)試用例 測(cè)試用例) { return 方法冊(cè).添加(測(cè)試用例.名稱, 測(cè)試用例); } /// <summary> /// 運(yùn)行指定名稱的測(cè)試并返回運(yùn)行結(jié)果〈<see cref="string"/>〉 /// </summary> /// <param name="名稱">方法注冊(cè)到測(cè)試的名稱</param> /// <returns>返回運(yùn)行結(jié)果〈<see cref="string"/>〉</returns> public static string 運(yùn)行(string 名稱) { if (方法冊(cè).有鍵(名稱)) { return 方法冊(cè)[名稱].方法.Invoke(); } else { return 名稱 + " : 不存在該方法!"; } } /// <summary> /// 注冊(cè)并向控制臺(tái)輸出運(yùn)行結(jié)果。 /// </summary> /// <param name="測(cè)試用例"></param> public static void 注冊(cè)并Print(測(cè)試用例 測(cè)試用例) { if(方法冊(cè).添加(測(cè)試用例.名稱, 測(cè)試用例)) { Print(測(cè)試用例.名稱); } } /// <summary> /// 向控制臺(tái)輸出運(yùn)行結(jié)果。 /// </summary> /// <param name="測(cè)試用例"></param> public static void Print(測(cè)試用例 測(cè)試用例) { Print(測(cè)試用例.名稱); } /// <summary> /// 向控制臺(tái)輸出運(yùn)行結(jié)果。 /// </summary> /// <param name="名稱"></param> public static void Print(string 名稱) { string 結(jié)果 = 運(yùn)行(名稱); string 期望 = 方法冊(cè)[名稱].期望值; Console.WriteLine(名稱 + "\r\nResult: "+ 結(jié)果); Console.Write("期望值: " + 期望); if (結(jié)果 == 期望) { var c = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" [TRUE]"); Console.ForegroundColor = c; } else { var c = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" [FALSE]"); Console.ForegroundColor = c; } } }
它可以方便的測(cè)試某個(gè)方法的返回string是否等于設(shè)定期望值
可以輸出到控制臺(tái),也可以保存在string。
要測(cè)試的類,位于項(xiàng)目 namespace:
//************************************************************ /// <summary> /// ◇ 增強(qiáng) 枚舉〖System.Enun〗的擴(kuò)展功能。 /// </summary> /// <seealso cref="Enum"/> /// <remarks></remarks> //************************************************************ public static class EnumEx { //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /// <summary> /// 返回枚舉 「thisEnum」 的定義名稱〈<see cref="string"/>〉 /// </summary> /// <param name="thisEnum">該枚舉自身</param> /// <returns>〈string〉返回枚舉的定義名稱</returns> public static string Name(this Enum thisEnum) { return Enum.GetName(thisEnum.GetType(), thisEnum); }
測(cè)試用例是這樣的,把它放到項(xiàng)目.Test namespace中以避免重名:
這里填入要顯示的名稱、期望值、方法體。
- 方法體的返回參數(shù)必須為 string
- 兩個(gè)用例名稱不能相同否則會(huì)覆蓋。
/// <summary> /// EnumEx的測(cè)試用例。 /// </summary> public class EnumEx { /// <summary>【測(cè)試用例】EnumEx.Name() </summary> public static 測(cè)試用例 Name = new 測(cè)試用例("EnumEx.Name - UriComponents.Path.Name()", "Path", NameFunc); /// <summary>【測(cè)試方法】UriComponents.Path調(diào)用EnumEx.Name() 返回值 ➤ "Path" </summary> /// <returns>返回值應(yīng)該等于"Path"</returns> public static string NameFunc() { return UriComponents.Path.Name(); } }
最后在新建控制臺(tái)應(yīng)用程序,就叫項(xiàng)目.Test,這樣測(cè)試有關(guān)內(nèi)容處在相同namespace,直接調(diào)用就行了
以上就是C#建立測(cè)試用例系統(tǒng)的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于C#建立測(cè)試用例系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 使用 BenchmarkDotNet 對(duì) C# 代碼進(jìn)行基準(zhǔn)測(cè)試
- 關(guān)于Unity C# Mathf.Abs()取絕對(duì)值性能測(cè)試詳解
- C#使用base64對(duì)字符串進(jìn)行編碼和解碼的測(cè)試
- C#使用String和StringBuilder運(yùn)行速度測(cè)試及各自常用方法簡(jiǎn)介
- 詳解C# WebApi 接口測(cè)試工具:WebApiTestClient
- c# 插入數(shù)據(jù)效率測(cè)試(mongodb)
- 京東聯(lián)盟C#接口測(cè)試示例分享
- C#/.Net 中快速批量給SQLite數(shù)據(jù)庫(kù)插入測(cè)試數(shù)據(jù)
- C#代碼性能測(cè)試類(簡(jiǎn)單實(shí)用)
- C#控制臺(tái)下測(cè)試多線程的方法
- c#測(cè)試反射性能示例
- c#測(cè)試本機(jī)sql運(yùn)算速度的代碼示例分享
- C# 單元測(cè)試全解析
相關(guān)文章
C#利用反射實(shí)現(xiàn)多數(shù)據(jù)庫(kù)訪問
本文詳細(xì)講解了C#利用反射實(shí)現(xiàn)多數(shù)據(jù)庫(kù)訪問的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03C#實(shí)現(xiàn)的封裝CURD到SqlHelper類用法簡(jiǎn)單分析
這篇文章主要介紹了C#實(shí)現(xiàn)的封裝CURD到SqlHelper類用法,涉及數(shù)據(jù)庫(kù)相關(guān)配置方法及SqlHelper類的簡(jiǎn)單使用技巧,代碼中包含了較為詳盡的注釋便于理解,需要的朋友可以參考下2017-11-11在C#中List集合使用First()方法獲取第一個(gè)元素的操作
這篇文章主要介紹了在C#中List集合使用First()方法獲取第一個(gè)元素的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12C#中判斷、驗(yàn)證字符串是否為日期格式的實(shí)現(xiàn)代碼
這篇文章主要介紹了C#中判斷、驗(yàn)證字符串是否為日期格式的實(shí)現(xiàn)代碼,使用DateTime類中自帶的兩個(gè)方法實(shí)現(xiàn),需要的朋友可以參考下2014-08-08