亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#建立測(cè)試用例系統(tǒng)的示例代碼

 更新時(shí)間:2020年07月03日 09:33:45   作者:魔法軟糖  
這篇文章主要介紹了C#建立測(cè)試用例系統(tǒng)的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

引言

很多時(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中以避免重名:

這里填入要顯示的名稱、期望值、方法體。

  1. 方法體的返回參數(shù)必須為 string
  2. 兩個(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)文章!

相關(guān)文章

最新評(píng)論