在assertEquals的捕获中应该有什么样的异常?

时间:2014-06-27 13:17:49

标签: java exception selenium webdriver try-catch

我正在制作一个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");
}

3 个答案:

答案 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)

我假设这是单元测试代码。 你可以通过两种方式处理它。

  1. 捕获错误并写入错误日志。
  2. 不要捕获异常并允许进一步调用堆栈的方法来处理它