2015-08-28 46 views
0

我已經爲我的自動化框架生成了使用reportNg的結果報告,但這看起來並不方便,因爲它沒有顯示結果中的測試用例描述。因此,我試圖使用生成接口IReporter定製HTML結果報告,但我發現了以下錯誤:在使用下面的代碼獲取「java:incompatible types:java.lang.Object無法轉換爲org.testng.ISuiteResult」

java: incompatible types: java.lang.Object cannot be converted to org.testng.ISuiteResult

import java.util.List; 
import java.util.Map; 
import org.testng.IReporter; 
import org.testng.ISuite; 
import org.testng.ISuiteResult; 
import org.testng.ITestContext; 
public class CustomReporter implements IReporter { 
    @Override 
    public void generateReport(List xmlSuites, List suites, 
           String outputDirectory) { 
     //Iterating over each suite included in the test 
     for (ISuite suite : suites) { 
      //Following code gets the suite name 
      String suiteName = suite.getName(); 
      //Getting the results for the said suite 
      Map suiteResults = suite.getResults(); 
      for (ISuiteResult sr : suiteResults.values()) { //issue comes here 
       ITestContext tc = sr.getTestContext(); 
       System.out.println("Passed tests for suite '" + suiteName + 
            "' is:" + tc.getPassedTests().getAllResults().size()); 
       System.out.println("Failed tests for suite '" + suiteName + 
            "' is:" + 
            tc.getFailedTests().getAllResults().size()); 
       System.out.println("Skipped tests for suite '" + suiteName + 
            "' is:" + 
            tc.getSkippedTests().getAllResults().size()); 
      } 
     } 
    } 
} 
+4

*請*把一些時間到格式化你的代碼 - 這是非常,非常努力,沒有任何indentatio閱讀ñ。 –

回答

2

您使用原Map類型在這裏:

Map suiteResults = suite.getResults(); 

您應該指定類型參數:

Map<String, ISuiteResult> suiteResults = suite.getResults(); 

或者因爲你不使用比下一行的其他變量,只是它內聯:

for (ISuiteResult sr : suite.getResults().values()) 

你需要做同樣的事情,你的方法簽名,太:

public void generateReport(
    List<XmlSuite> xmlSuites, 
    List<ISuite> suites, 
    String outputDirectory) 

相匹配的org.testng.IReporter documentation ...

+0

我用「for(ISuiteResult sr:suite.getResults()。values())」。但是現在在循環 (ISuite套件:套件) – vish

+0

@vish中得到了相同的異常:它不是一個例外,它是一個編譯時錯誤 - 並且以相同的方式修復它。我將編輯我的答案...我強烈建議在繼續學習之前詳細瞭解Java泛型。 –

+0

是的,對不起,這是一個編譯時錯誤,寫錯了,它是一個例外。 – vish

相關問題