Ошибка TestLink при сбое теста

Я пишу тесты в selenium webdriver, в java, и я интегрировал его с testlink, используя TestNG. Поэтому, когда я запускаю тест, и запуск правильный, он правильно сохраняется в 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);

}

person elcharrua    schedule 26.09.2013    source источник


Ответы (1)


Я думаю, причина в том, что вы никогда не доберетесь до блока else этого условия.

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

Когда Asser терпит неудачу, возникает новое AssertionError, поэтому вы никогда не дойдете даже до условия if. Вы также не можете отловить эту ошибку, потому что Exception тоже происходит от Throwable и Error. Таким образом, вы в основном можете удалить условие и попытаться поймать 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);
 }
person Petr Mensik    schedule 26.09.2013
comment
Спасибо за ответ, он идеален, собираюсь заглянуть в Listener. - person elcharrua; 27.09.2013
comment
Основываясь на вашем профиле - хорошо, если вы проголосуете или примете ответ, когда сочтете его полезным, это побудит людей дать вам несколько ответов. - person Petr Mensik; 29.09.2013
comment
Извините, я не понял, что не принял ответ, спасибо, что сообщили мне об этом. - person elcharrua; 02.10.2013
comment
Все в порядке, я тоже этого не знал некоторое время назад :-) Я рад, что это помогло вам - person Petr Mensik; 02.10.2013