【发布时间】:2014-09-10 08:56:05
【问题描述】:
我知道如何断言抛出异常。但是,我如何断言抛出了异常并成功捕获了它?例如,假设我有一个方法应该为无效输入抛出特定类型的异常
public static void myMethod(String value) {
try {
someExternalMethod(value);// can throw IllegalArgumentException
} catch (IllegalArgumentException e) {
System.out.println("Let me handle it differently");
} catch (Exception e) {
System.out.println("Not IllegalArgumentException");
}
}
现在我想断言,对于某些值,该方法确实抛出了“IllegalArgumentException”,而不是其他一些异常。
【问题讨论】:
-
对于相同的输入,先测试
someExternalMethod抛出异常,然后再测试myMethod不抛出异常怎么样? -
你可以模拟方法抛出异常。
-
@tobias_k:虽然我为了简单起见写成
someExternalMethod,但我调用实际方法的方式有点不同,我使用了一些深度重试策略,使用 Executors 来调用它。但我明白你的意思,如果我别无选择,我可能不得不改变我的测试方式 -
这个问题可能是重复的。
标签: java junit exception-handling