第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

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

1 回答

?
尚方寶劍之說

TA貢獻1788條經(jīng)驗 獲得超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 關(guān)注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號