我正在为自己的代码构建一个小的测试框架,并且我希望能够做到这一点:
test.callTo(() -> {/*...*/}).doesThrow(SomeException.class);
或类似的东西。
callTo
方法将只构建一个包含java.lang.Runnable
(或类似名称)的类的实例。该类将具有一个doesThrow
方法,该方法采用一些参数来表示要捕获的异常的类型,并执行以下操作:try {
try {
method.run();
} catch(ThePassedInExceptionType e) {
/* test passed */
return;
}
} catch (Throwable e) {}
/* test failed */
这种事情有可能吗?如果是这样,怎么办?如果没有,我还能做些什么来确保我的代码没有在测试代码中进行try / catch之外抛出正确的异常?
最佳答案
您可以做的是通过Class<? extends Exception>
。将此参数称为clazz
。
那你可以做
catch (Exception e) {
if (clazz.isInstance(e))
// do something
}
我不确定这是否是个好习惯,但是应该可以。
关于java - 传递要捕获的异常类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36000690/