0

我有几个看起来像这样的简单测试。

public class My1Test extends AutoBaseFunctions{

@Test
public void test1(){

    startDriver(STARTPAGE,DRIVER2USE);
    schoolLogin("XXX", "XXX");

    toolbarNav("toolsSingle","Manage Users");

    getElmObject("input[type='checkbox'][name='includeUsersHiddenFromDirectory']",loctype.CSS).click();
    getElmObject("Searchxx",loctype.LINKTEXT).click();

    driver.quit();
    //driver.close();
}

}

我遇到的问题是:在搜索按钮上执行 findElement 时,我故意导致发生 NoSuchElement 异常。当我运行 mvn surefire-report:report 命令时,输出在此处停止

万无一失的报告输出

直到我手动关闭打开的窗口 - 只有这样它才完成生成报告。

我知道当脚本出错时它会死掉并且永远不会到达 driver.quit 行。但是,如果我将它放在 try/catch 块中,报告会显示测试已通过,并且不会报告错误详细信息。我还尝试将其作为@Suite 测试的一部分并使用@After/@AfterClass,但这也不会关闭驱动程序窗口。

我究竟做错了什么?如何在遇到错误后生成报告,而无需“在场”手动关闭打开的窗口?

4

1 回答 1

0

你需要把它放在 try/catch 和 catch 块中

    try{

    }catch(Exception e){
     Assert.fail(e.getMessage());
    }finally{
              // CLOSE ANY OPEN RESOURCES HERE !!!!
    }

如果您有任何打开的资源,请不要忘记在 finally 块中关闭它们。

于 2013-08-03T03:07:45.487 回答