Gal*_*let 33 java junit assert try-catch
码:-
try {
Assert.assertEquals("1", "2");
} catch (Exception e) {
System.out.println("I am in error block");
}
Run Code Online (Sandbox Code Playgroud)
如果断言语句失败,我想捕获catch块中的错误.我正在尝试上面的代码,它没有发生.
是否会在java异常的catch块中捕获断言错误?
J R*_*ape 50
你差不多回答了自己的问题.如果失败,你的catch块将无法捕获抛出的AssertionError那个Assert,因为它是一个Error(或者更确切地说,它是扩展的java.lang.Error). 有关详细信息,请参阅文档.catch块只捕获Throwable扩展的对象java.lang.Exception
如果你真的想抓住它 - 你需要使用
catch (AssertionError e) {
...
Run Code Online (Sandbox Code Playgroud)
但是,正如其他人所提到的,这是使用断言的一种非常不寻常的方式 - 它们通常应该通过,如果它们失败,那么你想要继续执行程序是非常不寻常的.这就是为什么失败会抛出一个Error而不是一个Exception.你可以阅读更多关于(不)抓住Error在这一问题.
你确定你不只是想要一个测试 - if ( variableName == "1")?
注意,如果您正在测试单元测试助手代码,比如匹配器,那么抓住它可能是有意义的AssertionError.
如果您想同时捕获Exception和Error实例,请使用:
...
catch (Throwable t)
{
...
}
Run Code Online (Sandbox Code Playgroud)
由于两者Exception和Error扩展Throwable。
| 归档时间: |
|
| 查看次数: |
35308 次 |
| 最近记录: |