我正在制作一个webdriver,其中一部分是检查标题以确保它在右侧页面上。现在只是为了我的利益,我希望它在标题不匹配时显示一个对话框,但现在它只是在控制台中给我一个错误信息。我相信这是我的例外,这就是问题所在。有什么建议吗?
try{
assertEquals("Current page title", "Account Inventory - Select Manager", pageTitle);
}
catch(Exception ex)
{
JFrame frame = new JFrame("Message");
JOptionPane.showMessageDialog(frame ,
"The title does not match");
}
答案 0 :(得分:3)
assertEquals
抛出AssertionError
。因此,您应该明确地捕获该错误,或者扩大您的捕获量以包含Throwable
而不是Exception
。
请参阅下面的类型层次结构图,了解catch (Exception e)
无法捕获AssertionError
的原因。
java.lang.Object
|--- java.lang.Throwable
|--- java.lang.Error
| --- java.lang.AssertionError // not a descendent of Exception
|--- java.lang.Exception
然而......测试通常应该是自动化的,所以我无法想象为什么你想通过显示对话框来引入人类元素。
答案 1 :(得分:0)
实际上,断言不是用于处理异常,而是用于断言某些测试用例。如果断言的情况不成立,则导致问题的输入存在严重问题需要特别注意,这就是当断言失败时得到AssertionError
的原因。 / p>
我认为你正在混淆使用异常和错误的意图。
答案 2 :(得分:0)
我假设这是单元测试代码。 你可以通过两种方式处理它。