测试失败时出现TestLink错误

时间:2013-09-26 20:17:31

标签: java selenium webdriver testng testlink

我在selenium webdriver中编写测试,在java中我使用TestNG将它与testlink集成。因此,当我运行测试并且运行正确时,它会在testlink中正确保存。但是当测试失败时,测试中会出现以下错误:

testlink.api.java.client.TestLinkAPIException:调用者未提供所需的参数状态。

这是我的测试方法:

@Parameters({"nombreBuild", "nombrePlan", "nomTL_validacionCantidadMensajes"})
    @Test
    public void validarMensajes(String nombreBuild, String nombrePlan, String nomTL_validacionCantidadMensajes) throws Exception {
        String resultado = null;
        String nota = null;
        boolean test;
        try{
            homePage = new HomePageAcquirer(driver);
            homePage.navigateToFraudMonitor();
            fraud = new FraudMonitorPageAcquirer(driver);
            test = fraud.validarCantidadMensajes();
            Assert.assertTrue(test);
            if(test){
                resultado = TestLinkAPIResults.TEST_PASSED;
            }else {
                nota = fraud.getError();
                System.out.println(nota);
                resultado = TestLinkAPIResults.TEST_FAILED;
            }
        }catch (Exception e){
            resultado = TestLinkAPIResults.TEST_FAILED;
            nota = fraud.getError();
            e.printStackTrace();
        }finally{
            ResultadoExecucao.reportTestCaseResult(PROJETO, nombrePlan, nomTL_validacionCantidadMensajes, nombreBuild, nota, resultado);
        }
    }

当测试通过时,xml很好用。

用于设置值的testlink方法。

 public static void reportTestCaseResult(String projetoTeste, String planoTeste, String casoTeste, String nomeBuild, String nota, String resultado) throws TestLinkAPIException {
    TestLinkAPIClient testlinkAPIClient = new TestLinkAPIClient(DEVKEY, URL);
    testlinkAPIClient.reportTestCaseResult(projetoTeste, planoTeste, casoTeste, nomeBuild, nota, resultado);

}

1 个答案:

答案 0 :(得分:1)

我认为原因是你永远不会遇到这种情况的其他障碍

Assert.assertTrue(test);
if(test){
    resultado = TestLinkAPIResults.TEST_PASSED;
} else {
    //
}

当Asser失败时,会出现新的AssertionError,所以你永远不会使它成为if条件。您也无法捕获此错误,因为Exception也来自ThrowableError。所以你基本上可以删除条件并尝试捕获Error - 这不是最佳实践,但它会起作用。在这些情况下使用的最佳方法是listener,但我不确定这对@Parameters有何用处。但是,你可以像这样做

try{
    Assert.assertTrue(test);
    resultado = TestLinkAPIResults.TEST_PASSED;
} catch (AsertionError e){
     resultado = TestLinkAPIResults.TEST_FAILED;
     nota = fraud.getError();
     e.printStackTrace();
 }finally{
     ResultadoExecucao.reportTestCaseResult(PROJETO, nombrePlan, nomTL_validacionCantidadMensajes, nombreBuild, nota, resultado);
 }