2013-09-26 5 views
0

Im écrit des tests dans le pilote web selenium, en java et je l'ai intégré à testlink en utilisant TestNG. Donc, quand je lance un test et que l'exécution est correcte, il enregistre correctement dans testlink. Mais lorsque le test échoue, l'erreur suivante apparaît sur le test:Erreur TestLink en cas d'échec du test

testlink.api.java.client.TestLinkAPIException: L'état du paramètre requis n'a pas été fourni par l'appelant.

ceci est ma méthode d'essai:

@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); 
     } 
    } 

Le xml est bien beacuse lorsque le test passe cela fonctionne.

Et la méthode testlink pour définir les valeurs.

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); 

} 

Répondre

1

Je pense que la raison est que vous ne serez jamais au bloc autre de cette condition

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

Lorsque Asser échoue, nouveau AssertionError se produit si vous ne faites jamais encore à la condition if. Vous ne pouvez pas non plus attraper cette erreur car Exception dérive également de Throwable et de Error. Donc, vous pouvez essentiellement supprimer la condition et essayer d'attraper Error - ce qui n'est pas vraiment la meilleure pratique, mais cela va fonctionner. La meilleure chose à utiliser dans ces situations est listener mais je ne suis pas sûr de savoir comment cela fonctionne avec @Parameters. Cependant, vous pouvez toujours le faire comme ceci

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); 
} 
+0

Merci sur la réponse son parfait, va regarder dans l'auditeur. – elcharrua

+0

Basé sur votre profil - c'est bien si vous upvote ou accepter la réponse quand vous le trouvez utile, cela va motiver les gens à vous donner quelques réponses –

+0

Désolé je ne savais pas que je n'ai pas accepté la réponse, merci de me le faire savoir. – elcharrua

Questions connexes