服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#建立测试用例系统的示例代码

C#建立测试用例系统的示例代码

2022-09-21 14:05魔法软糖 C#

这篇文章主要介绍了C#建立测试用例系统的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

引言

很多时候,需要对类中的方法进行一些测试,来判断是否能按要求输出预期的结果。

C#提供了快速创建单元测试的方法,但单元测试不仅速度慢不方便,大量的单元测试还会拖慢项目的启动速度。

所以决定自己搞个方便的测试用例。

控制台调用

只需要简简单单的一句话

测试用例.注册并Print(EnumEx.Name);

结果画面

C#建立测试用例系统的示例代码

测试用例的实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/// <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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//************************************************************
  /// <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中以避免重名:

这里填入要显示的名称、期望值、方法体。

  1. 方法体的返回参数必须为 string
  2. 两个用例名称不能相同否则会覆盖。
?
1
2
3
4
5
6
7
8
9
10
/// <summary>
  /// EnumEx的测试用例。
  /// </summary>
  public class EnumEx {
    /// <summary>【测试用例】EnumEx.Name() </summary>
    public static 测试用例 Name = new 测试用例("EnumEx.Name - UriComponents.Path.Name()", "Path", NameFunc);
    /// <summary>【测试方法】UriComponents.Path调用EnumEx.Name() 返回值 ➤ "Path" </summary>
    /// <returns>返回值应该等于"Path"</returns>
    public static string NameFunc() { return UriComponents.Path.Name(); }
  }

最后在新建控制台应用程序,就叫项目.Test,这样测试有关内容处在相同namespace,直接调用就行了

以上就是C#建立测试用例系统的示例代码的详细内容,更多关于C#建立测试用例系统的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/ps3online/p/12359309.html

延伸 · 阅读

精彩推荐
  • C#Unity实现鼠标点2D转3D进行旋转

    Unity实现鼠标点2D转3D进行旋转

    这篇文章主要为大家详细介绍了Unity实现鼠标点2D转3D进行旋转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    木小星10112022-09-03
  • C#判断一个整数是否是2的N次幂实现方法

    判断一个整数是否是2的N次幂实现方法

    下面小编就为大家分享一篇判断一个整数是否是2的N次幂实现方法,实例简洁,具有很好的参考价值。希望对大家有所帮助...

    Jichan·Jong9282022-02-12
  • C#C# SQlite操作方法小结

    C# SQlite操作方法小结

    这篇文章主要介绍了C# SQlite操作方法,较为详细的讲述了SQLite的下载与C#针对SQLite的连接、创建、与执行SQL语句等操作相关技巧,需要的朋友可以参考下...

    雪岢奇8292021-11-30
  • C#C#版Windows服务安装卸载小工具

    C#版Windows服务安装卸载小工具

    这篇文章主要为大家推荐了一款C#版Windows服务安装卸载小工具,小巧灵活的控制台程序,希望大家喜欢,感兴趣的小伙伴们可以参考一下...

    韩天伟7582021-12-01
  • C#利用AOP实现SqlSugar自动事务

    利用AOP实现SqlSugar自动事务

    这篇文章主要为大家详细介绍了利用AOP实现SqlSugar自动事务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    若若若邪5162022-01-25
  • C#利用WCF双工模式实现即时通讯

    利用WCF双工模式实现即时通讯

    这篇文章主要介绍了利用WCF双工模式实现即时通讯的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    会长4142021-12-07
  • C#C#使用FileStream对象读写文件

    C#使用FileStream对象读写文件

    这篇文章主要为大家详细介绍了C#使用FileStream对象读写文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    lhgogogo11552022-07-21
  • C#C# SqlHelper应用开发学习

    C# SqlHelper应用开发学习

    这篇文章主要和大家一起学习C# SqlHelper应用开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    蒙小米9992021-12-18