在JUnit5中,使用TestExecutionExceptionHandler提供的handleTestExecutionException方法,只要测试抛出代码未捕获的异常,就会调用该方法。
我正在尝试检测我们的其中一台硬件设备是否崩溃。 可以通过几种方式检测到这些崩溃,因为我们有很多与我们的不同系统(Rest,Telnet,SSH,WebSocket,SOAP等)进行通信的方式,而这些系统都会抛出自己的错误类型。 因此,与其使用大量的if语句来检查每个throwable实例,不如说是RestException,TelnetException ...的实例, 我希望列出一个Classes,然后循环遍历该列表以查看引发的错误是否在该列表中。
这似乎比巨大的if语句更易于维护和阅读。
@Override
public void handleTestExecutionException(ExtensionContext extensionContext, Throwable throwable) throws Throwable {
List<Class<? extends Throwable>> crashErrors = Arrays.asList(NotFoundException.class, BadGatewayException.class, SocketTimeoutException.class, ConnectException.class, ...);
for(Class<? extends Throwable> error : crashErrors){
if(throwable instanceof error) {
//process the crash
break;
}
}
}
希望能遍历列表以确定系统是否崩溃。
有没有办法做到这一点,或者最好是使用if语句包含20或statement之类的内容?
答案 0 :(得分:1)
看看Class
的方法。在这里您可以找到isInstance
;)