2015-08-28 42 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

相关问题