因此,在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)));
- 1 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報
0/150
提交
取消