2013-09-26 212 views
0

我在用java編寫selenium webdriver的測試,我用TestNG將它與testlink集成在一起。所以當我運行測試並且運行正確時,它在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

我想原因是,你永遠不會得到這個條件

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

當阿瑟出現故障,else塊新AssertionError發生,所以你永遠不會使它甚至如果條件。您也無法捕獲此錯誤,因爲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); 
} 
+0

感謝回覆它的完美,將去看聽者。 – elcharrua

+0

根據你的個人資料 - 很高興如果你upvote或接受答案,當你發現它有用,這將激勵人們給你一些答案 –

+0

對不起,我沒有意識到我沒有接受答案,謝謝你讓我知道這一點。 – elcharrua

相關問題