2015-10-02 47 views
0

我目前正在研究基於testng xml中的參數在測試套件執行後將testng報告上傳到Amazon S3的功能。請看下面的TestNG的XML:將TestNg報告上傳到S3

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="Base Framework Unit Test Suite" verbose="1" > 
    <parameter name="upload-test-reports" value="true" /> 
    <parameter name="aws-provider-type" value="profile" /> 
    <parameter name="aws-s3-bucket" value="qa-reports" /> 
    <parameter name="target-reports-directory" value="TestProduct/Sprint1" /> 

    <test name="Test-base-built Unit Tests" > 
     <parameter name="test-run-type" value="local" /> 
     <parameter name="name" value="Test-base-built Unit Tests" /> 
     <parameter name="browser" value="htmlunitwithjs" /> 
     <groups> 
      <run> 
       <include name="unittest" /> 
      </run> 
     </groups> 
     <classes> 
      <class name="unittest.TestBaseBuilt_Test" /> 
     </classes> 
    </test> 

</suite> 

鑑於前四個參數(上載測試報告,AWS提供者型,AWS-S3桶,和目標的報告目錄),Java項目將上傳所有的文件在默認的測試輸出目錄(這是目前/建立/報告/測試)到S3。

現在,上傳部分工作正常。問題是它總是上傳前一次測試運行的文件。我曾嘗試創建一個擴展TestListenerAdapter並將上傳邏輯放在onFinish方法中的testng偵聽器。這沒有用;它在生成當前運行報告之前上載。我還試圖編寫一個實現IReporter並將上傳邏輯放入generateReport方法的自定義testng記者。同樣的結果;它在生成當前運行報告之前上載。

那麼,做任何testng專家知道我可以把我的文件上傳邏輯,以便它執行後,testng實際上生成的報告文件?

任何幫助非常感謝!

回答

1

解決方案最終成爲TestNG監聽器。我實現了IExecutionListener,並將我的上傳邏輯放在onExecutionFinish方法中。該方法在TestNG生成的報告之後運行,因此它上載了當前測試運行的報告而非上一個報告。