亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

斷言我的 C# 函數拋出與另一個函數相同的異常

斷言我的 C# 函數拋出與另一個函數相同的異常

C#
拉風的咖菲貓 2023-06-25 13:23:18
因此,在Microsoft.VisualStudio.TestTools.UnitTesting命名空間中有一個斷言函數Assert.ThrowsException<T>(Action),用于測試是否Action拋出類型為 的異常T。但這<T>意味著我必須事先知道會拋出什么異常。假設我正在創建一個方法,該方法應該拋出類似于另一個代碼仍然“流動”(規范仍在變化)的方法的異常。讓我們調用我的函數MyClass.Func和另一個函數UpstreamClass.Func。(MyClass和都UpstreamClass繼承自ICommonInterface,它定義了public void Func(int))有沒有辦法斷言,當在兩個函數中提供應該拋出異常的參數時,拋出的異常是相同的類型?或者,在(虛構的)代碼中:// Assume -1 should generate an exceptionAssert.ThrowSameException(UpstreamClass.Func(-1), MyClass.Func(-1));
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

你可以使用這樣的方法:


public static bool AllThrowSameException(params Action[] actions)

{

    Type lastExceptionType = null;

    foreach (Action action in actions)

    {

        try

        {

            action();

            return false;

        }

        catch (Exception ex)

        {

            if (lastExceptionType?.Equals(ex.GetType()) == false)

                return false;

            lastExceptionType = ex.GetType();

        }

    }


    return true;

}

測試將是:


Assert.IsTrue(AllThrowSameException(() => UpstreamClass.Func(-1), () => MyClass.Func(-1)));



查看完整回答
反對 回復 2023-06-25
  • 1 回答
  • 0 關注
  • 163 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號