因此,在pipeline{
agent any
stages {
stage('init'){
steps{ echo "init" }
}
}
post {
success {
echo "sucess ${currentBuild.result}"
}
failure {
echo "Failure ${currentBuild.result}"
}
}
}
命名空间中,有一个断言函数Microsoft.VisualStudio.TestTools.UnitTesting
用于测试Assert.ThrowsException<T>(Action)
是否引发类型为Action
的异常。
但是T
意味着我必须事先知道将引发什么异常。
比方说,我正在创建一个方法,该方法应引发异常,该异常类似于代码仍为“流体”(规范仍在更改)的另一个方法。让我们叫我的函数<T>
和另一个函数MyClass.Func
。
(UpstreamClass.Func
和MyClass
都继承自UpstreamClass
,后者定义了ICommonInterface
)
有没有一种方法可以断言,当在两个函数中都应抛出异常的联合参数时,抛出的异常是同一类型?
或者,在(虚构的)代码中:
public void Func(int)
答案 0 :(得分: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)));