创建和使用类列表List <Class <?>>

时间:2019-09-16 16:08:37

标签: java junit5

在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之类的内容?

1 个答案:

答案 0 :(得分:1)

看看Class的方法。在这里您可以找到isInstance;)