我知道如何断言抛出异常。但是,我如何断言异常被抛出并被成功捕获?例如,假设我有一个方法应该为无效输入抛出特定类型的异常
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”,而不是其他一些异常。
最佳答案
在测试的上下文中myMethod
你不能(更重要的是,你不应该)检查 someExternalMethod
扔了IllegalArgumentException
.事实上,你对 myMethod
的测试不应假定调用 someExternalMethod
已完成:它是 myMethod
的实现细节.
原因myMethod
捕获这些异常是为了对调用者隐藏它们。您应该通过传递导致它们的值并验证在这两种情况下都没有抛出任何内容来检查是否对您隐藏了这些异常。
测试 someExternalMethod
,以及它抛出的异常,是通过测试 someExternalMethod
完成的任务, 不是 myMethod
.
关于java - 如何断言异常被捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761221/