下面列出了怎么用org.apache.maven.plugins.surefire.report.ReportTestSuite的API类实例代码及写法,或者点击链接到github查看源代码。
public List<String> getFailingTests() {
List<String> result = new ArrayList<>();
for (MavenProject mavenProject : reactorProjects) {
File surefireReportsDirectory = getSurefireReportsDirectory(mavenProject);
SurefireReportParser parser = new SurefireReportParser(Collections.singletonList(surefireReportsDirectory), Locale.ENGLISH, new NullConsoleLogger());
try {
List<ReportTestSuite> testSuites = parser.parseXMLReportFiles();
for (ReportTestSuite reportTestSuite : testSuites) {
if (reportTestSuite.getNumberOfErrors()+reportTestSuite.getNumberOfFailures() > 0) {
result.add(reportTestSuite.getFullClassName());
}
}
} catch (MavenReportException e) {
e.printStackTrace();;
}
}
return result;
}
/**
* Parses the surefire reports and returns a summarized TestResult object.
*
* @param testPlan the testplan
* @return test result
*/
public TestResult getReport(TestPlan testPlan) {
TestResult testResult = new TestResult();
try {
Path filePath = TestGridUtil.getSurefireReportsDir(testPlan);
final SurefireReportParser surefireReportParser = new SurefireReportParser(
Collections.singletonList(filePath.toFile()),
ENGLISH,
new NullConsoleLogger());
final List<ReportTestSuite> reportTestSuites = surefireReportParser.parseXMLReportFiles();
final Map<String, String> summary = surefireReportParser.getSummary(reportTestSuites);
testResult.totalTests = summary.get("totalTests");
testResult.totalFailures = summary.get("totalFailures");
testResult.totalErrors = summary.get("totalErrors");
testResult.totalSkipped = summary.get("totalSkipped");
final List<ReportTestCase> failureDetails = surefireReportParser.getFailureDetails(reportTestSuites);
testResult.failureTests = getTests(failureDetails, ReportTestCase::hasFailure);
testResult.errorTests = getTests(failureDetails, ReportTestCase::hasError);
return testResult;
} catch (MavenReportException e) {
logger.warn("Error while processing surefire-reports for " + testPlan.getId() + " for infra combination:"
+ " " + testPlan.getInfraParameters() + ". Continuing processing of other test plans", e);
}
return testResult;
}
private static void computeTestFailureMessageFromReports(StringBuilder message, SurefireReportParser parser)
throws MavenReportException {
List<ReportTestSuite> suites = parser.parseXMLReportFiles();
Map<String, String> summary = parser.getSummary(suites);
message
.append(summary.get("totalTests"))
.append(" tests, ")
.append(summary.get("totalErrors"))
.append(" errors, ")
.append(summary.get("totalFailures"))
.append(" failures, ")
.append(summary.get("totalSkipped"))
.append(" skipped ")
.append("(executed in ")
.append(summary.get("totalElapsedTime"))
.append("s)<br/><ul>");
for (ReportTestSuite suite : suites) {
if (suite.getNumberOfErrors() > 0 || suite.getNumberOfFailures() > 0) {
for (ReportTestCase tc : suite.getTestCases()) {
if (tc.getFailure() != null
&& !"skipped".equalsIgnoreCase((String) tc.getFailure().get("message"))) {
message
.append("<li><em>")
.append(tc.getFullName())
.append("</em> failed: ")
.append(tc.getFailure().get("message"))
.append("</li>");
}
}
}
}
message.append("</ul>");
}