C#建立測試用例系統(tǒng)的示例代碼
引言
很多時(shí)候,需要對類中的方法進(jìn)行一些測試,來判斷是否能按要求輸出預(yù)期的結(jié)果。
C#提供了快速創(chuàng)建單元測試的方法,但單元測試不僅速度慢不方便,大量的單元測試還會(huì)拖慢項(xiàng)目的啟動(dòng)速度。
所以決定自己搞個(gè)方便的測試用例。
控制臺(tái)調(diào)用
只需要簡簡單單的一句話
測試用例.注冊并Print(EnumEx.Name);
結(jié)果畫面

測試用例的實(shí)現(xiàn)
/// <summary>
/// 提供測試用例的注冊和運(yùn)行功能,用來比對結(jié)果和預(yù)期值是否相同,向控制臺(tái)輸出結(jié)果。
/// </summary>
public class 測試用例 {
/// <summary>
/// 測試的方法
/// </summary>
public Func<string> 方法 { get; set; }
/// <summary>
/// 測試名稱
/// </summary>
public string 名稱 { get; set; }
/// <summary>
/// 期望得到的結(jié)果string
/// </summary>
public string 期望值 { get; set; }
/// <summary>
/// 新建一個(gè)測試
/// </summary>
/// <param name="v名稱">測試名稱</param>
/// <param name="v期望值">期望得到的結(jié)果string</param>
/// <param name="v方法">測試的方法</param>
public 測試用例(string v名稱, string v期望值, Func<string> v方法) {
名稱 = v名稱;
期望值 = v期望值;
方法 = v方法;
}
/// <summary>
/// 儲(chǔ)存所有注冊的方法。
/// </summary>
public static OrderedDictionary<string, 測試用例> 方法冊 = new OrderedDictionary<string, 測試用例>();
/// <summary>
/// 將「返回值為string的方法〈Func<string>〉」注冊到「方法冊」中。
/// </summary>
/// <param name="測試用例">要注冊的測試</param>
/// <returns>返回是否注冊成功</returns>
public static bool 注冊(測試用例 測試用例) {
return 方法冊.添加(測試用例.名稱, 測試用例);
}
/// <summary>
/// 運(yùn)行指定名稱的測試并返回運(yùn)行結(jié)果〈<see cref="string"/>〉
/// </summary>
/// <param name="名稱">方法注冊到測試的名稱</param>
/// <returns>返回運(yùn)行結(jié)果〈<see cref="string"/>〉</returns>
public static string 運(yùn)行(string 名稱) {
if (方法冊.有鍵(名稱)) {
return 方法冊[名稱].方法.Invoke();
} else {
return 名稱 + " : 不存在該方法!";
}
}
/// <summary>
/// 注冊并向控制臺(tái)輸出運(yùn)行結(jié)果。
/// </summary>
/// <param name="測試用例"></param>
public static void 注冊并Print(測試用例 測試用例) {
if(方法冊.添加(測試用例.名稱, 測試用例)) {
Print(測試用例.名稱);
}
}
/// <summary>
/// 向控制臺(tái)輸出運(yùn)行結(jié)果。
/// </summary>
/// <param name="測試用例"></param>
public static void Print(測試用例 測試用例) {
Print(測試用例.名稱);
}
/// <summary>
/// 向控制臺(tái)輸出運(yùn)行結(jié)果。
/// </summary>
/// <param name="名稱"></param>
public static void Print(string 名稱) {
string 結(jié)果 = 運(yùn)行(名稱);
string 期望 = 方法冊[名稱].期望值;
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;
}
}
}
它可以方便的測試某個(gè)方法的返回string是否等于設(shè)定期望值
可以輸出到控制臺(tái),也可以保存在string。
要測試的類,位于項(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);
}
測試用例是這樣的,把它放到項(xiàng)目.Test namespace中以避免重名:
這里填入要顯示的名稱、期望值、方法體。
- 方法體的返回參數(shù)必須為 string
- 兩個(gè)用例名稱不能相同否則會(huì)覆蓋。
/// <summary>
/// EnumEx的測試用例。
/// </summary>
public class EnumEx {
/// <summary>【測試用例】EnumEx.Name() </summary>
public static 測試用例 Name = new 測試用例("EnumEx.Name - UriComponents.Path.Name()", "Path", NameFunc);
/// <summary>【測試方法】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,這樣測試有關(guān)內(nèi)容處在相同namespace,直接調(diào)用就行了
以上就是C#建立測試用例系統(tǒng)的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于C#建立測試用例系統(tǒng)的資料請關(guān)注腳本之家其它相關(guān)文章!
- 使用 BenchmarkDotNet 對 C# 代碼進(jìn)行基準(zhǔn)測試
- 關(guān)于Unity C# Mathf.Abs()取絕對值性能測試詳解
- C#使用base64對字符串進(jìn)行編碼和解碼的測試
- C#使用String和StringBuilder運(yùn)行速度測試及各自常用方法簡介
- 詳解C# WebApi 接口測試工具:WebApiTestClient
- c# 插入數(shù)據(jù)效率測試(mongodb)
- 京東聯(lián)盟C#接口測試示例分享
- C#/.Net 中快速批量給SQLite數(shù)據(jù)庫插入測試數(shù)據(jù)
- C#代碼性能測試類(簡單實(shí)用)
- C#控制臺(tái)下測試多線程的方法
- c#測試反射性能示例
- c#測試本機(jī)sql運(yùn)算速度的代碼示例分享
- C# 單元測試全解析
相關(guān)文章
WPF+ASP.NET SignalR實(shí)現(xiàn)后臺(tái)通知功能的示例代碼
本文以一個(gè)簡單示例,簡述如何通過WPF+ASP.NET SignalR實(shí)現(xiàn)消息后臺(tái)通知以及數(shù)據(jù)的實(shí)時(shí)刷新,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正2022-09-09
C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法示例
這篇文章主要介紹了C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了FileStream文件流的形式循環(huán)讀取大文件的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
C#實(shí)現(xiàn)一個(gè)相當(dāng)全面的數(shù)據(jù)轉(zhuǎn)換工具類
這篇文章主要為大家介紹了如何使用C#編寫一個(gè)通用工具類DataConvert來進(jìn)行數(shù)據(jù)轉(zhuǎn)換,包括30+個(gè)數(shù)據(jù)類型轉(zhuǎn)換,需要的可以了解一下2025-03-03
C#設(shè)置自定義文件圖標(biāo)實(shí)現(xiàn)雙擊啟動(dòng)(修改注冊表)
這篇文章介紹的是利用C#設(shè)置自定義文件圖標(biāo),然后實(shí)現(xiàn)雙擊啟動(dòng)的功能,文章給出了示例代碼,介紹的很詳細(xì),有需要的可以參考借鑒。2016-08-08
c#根據(jù)文件類型獲取相關(guān)類型圖標(biāo)的方法代碼
c#根據(jù)文件類型獲取相關(guān)類型圖標(biāo)的方法代碼,需要的朋友可以參考一下2013-05-05

