如果在启动时抛出异常,如何运行junit tearDown方法?

时间:2014-08-22 15:59:24

标签: selenium junit

我正在通过junit运行selenium测试。 在我的系统中,AbstractSeleniumTestCase类的setUp方法设置了selenium web驱动程序和firefox配置文件,tearDown方法从系统中注销并关闭了selenium。

有些测试会覆盖setUp和tearDown方法来执行自定义测试setUp和tearDown。

我遇到的问题是,如果在测试的startUp方法中出现错误(如意外的弹出窗口或selenium异常),那么Web浏览器永远不会关闭,并且永远不会执行特定于测试的tearDown操作。 / p>

2 个答案:

答案 0 :(得分:0)

您可以使用try方法中的setUp()块在遇到错误后运行tearDown(),并将测试设置的“肉”移到另一种方法中:

public void setUp() throws Exception {
    try {
        mySetUp();
    } catch (Exception e) {
        tearDown();
        throw e;
    }
}

然后,在您的子类中,覆盖mySetUp()而不是setUp()

答案 1 :(得分:0)

根据文档:

,您应该实现TestWatcher并覆盖已完成的方法
  

在测试方法完成时调用(无论是通过还是失败)

我暂时没有使用过JUnit,但是我记得,@Before之前已经应用了规则。

此外,您可以在覆盖启动方法时启动驱动程序,并通过覆盖失败的方法等来采取任何相关操作。通过这种方式,可以在@Before@After上删除重复的内容。查看文档以了解具体信息。

然后,您可以使用@Rule@ClassRule注释您的测试类,谷歌了解哪个更适合您的需求。为了满足您的任何特定需求,还可以创建rule chain