时间:2021-05-20
引言
很多时候,需要对类中的方法进行一些测试,来判断是否能按要求输出预期的结果。
C#提供了快速创建单元测试的方法,但单元测试不仅速度慢不方便,大量的单元测试还会拖慢项目的启动速度。
所以决定自己搞个方便的测试用例。
控制台调用
只需要简简单单的一句话
测试用例.注册并Print(EnumEx.Name);
结果画面
测试用例的实现
/// <summary> /// 提供测试用例的注册和运行功能,用来比对结果和预期值是否相同,向控制台输出结果。 /// </summary> public class 测试用例 { /// <summary> /// 测试的方法 /// </summary> public Func<string> 方法 { get; set; } /// <summary> /// 测试名称 /// </summary> public string 名称 { get; set; } /// <summary> /// 期望得到的结果string /// </summary> public string 期望值 { get; set; } /// <summary> /// 新建一个测试 /// </summary> /// <param name="v名称">测试名称</param> /// <param name="v期望值">期望得到的结果string</param> /// <param name="v方法">测试的方法</param> public 测试用例(string v名称, string v期望值, Func<string> v方法) { 名称 = v名称; 期望值 = v期望值; 方法 = v方法; } /// <summary> /// 储存所有注册的方法。 /// </summary> public static OrderedDictionary<string, 测试用例> 方法册 = new OrderedDictionary<string, 测试用例>(); /// <summary> /// 将「返回值为string的方法〈Func<string>〉」注册到「方法册」中。 /// </summary> /// <param name="测试用例">要注册的测试</param> /// <returns>返回是否注册成功</returns> public static bool 注册(测试用例 测试用例) { return 方法册.添加(测试用例.名称, 测试用例); } /// <summary> /// 运行指定名称的测试并返回运行结果〈<see cref="string"/>〉 /// </summary> /// <param name="名称">方法注册到测试的名称</param> /// <returns>返回运行结果〈<see cref="string"/>〉</returns> public static string 运行(string 名称) { if (方法册.有键(名称)) { return 方法册[名称].方法.Invoke(); } else { return 名称 + " : 不存在该方法!"; } } /// <summary> /// 注册并向控制台输出运行结果。 /// </summary> /// <param name="测试用例"></param> public static void 注册并Print(测试用例 测试用例) { if(方法册.添加(测试用例.名称, 测试用例)) { Print(测试用例.名称); } } /// <summary> /// 向控制台输出运行结果。 /// </summary> /// <param name="测试用例"></param> public static void Print(测试用例 测试用例) { Print(测试用例.名称); } /// <summary> /// 向控制台输出运行结果。 /// </summary> /// <param name="名称"></param> public static void Print(string 名称) { string 结果 = 运行(名称); string 期望 = 方法册[名称].期望值; Console.WriteLine(名称 + "\r\nResult: "+ 结果); Console.Write("期望值: " + 期望); if (结果 == 期望) { 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; } } }它可以方便的测试某个方法的返回string是否等于设定期望值
可以输出到控制台,也可以保存在string。
要测试的类,位于项目 namespace:
//************************************************************ /// <summary> /// ◇ 增强 枚举〖System.Enun〗的扩展功能。 /// </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); }测试用例是这样的,把它放到项目.Test namespace中以避免重名:
这里填入要显示的名称、期望值、方法体。
最后在新建控制台应用程序,就叫项目.Test,这样测试有关内容处在相同namespace,直接调用就行了
以上就是C#建立测试用例系统的示例代码的详细内容,更多关于C#建立测试用例系统的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前几天为新员工写一个简单的测试框架,可让他们方便的写测试用例并且执行。期间遇到一个问题就是如何让他们增加测试用例而用不影响测试框架的代码?c++的单件模式可以解
1.问题在Idea2017.3中,建立JUnit5的测试用例TestCase,同时建立JUnit4的测试套件,运行测试套件时提示出错“java.lang.Exc
本文实例为大家分享了C#操作INI配置文件示例的具体代码,供大家参考,具体内容如下源文件地址:C#操作INI配置文件示例创建如图所示的控件:源代码:usingS
一个好的测试设计的具体体现就是高效的测试用例,要设计高效的测试用例,就需要对系统的变化、流程和场景有较深的了解。为了理解各种联系、流程和相互关系,就需要借助系统
前言单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例,但是往往忽略了对Controller层写单元测试。我所在的公司没见过一个对C