问题描述
有没有办法测试一个特定的异常是否在带有多个异常的 catch 子句中抛出?像这样:
public void tryToHandleSample(double[] data,int id) {
try {
this.sample(data,id);
} catch (IllegalArgumentException | UnsupportedOperationException | IllegalStateException | IllegalMonitorStateException exception) {
exception.printstacktrace();
}
}
我想我不能测试上面代码的原因是因为没有显式抛出异常,所以一个简单的解决方案是创建一个单独的 catch 子句,如下所示:
public void tryToHandleSample(double[] data,id);
} catch (IllegalArgumentException illegalArgumentException) {
throw new IllegalArgumentException();
} catch (UnsupportedOperationException unsupportedOperationException) {
throw new UnsupportedOperationException();
} catch (IllegalStateException illegalStateException) {
throw new IllegalStateException();
} catch (IllegalMonitorStateException illegalMonitorStateException) {
throw new IllegalMonitorStateException();
}
}
在我看来,这个解决方案不太优雅。所以我想知道如何测试第一个示例中是否抛出特定异常。
我的测试方法,测试是否抛出 UnsupportedOperationException,如下所示:
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void test_tryToHandleSampleWithFaultyDataInput_generatesIllegalMonitorStateException() throws IllegalMonitorStateException {
CryoKeeper cryoKeeper = new CryoKeeper(new HashCreatorImpl());
double[] sample = {1,2,3,4,5,6};
expectedException.expect(IllegalMonitorStateException.class);
cryoKeeper.tryToHandleSample(sample,1);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)