下面列出了怎么用org.apache.maven.plugins.surefire.report.ReportTestCase的API类实例代码及写法,或者点击链接到github查看源代码。
private List<TestResult.TestCaseResult> getTests(List<ReportTestCase> failureDetails,
Predicate<? super ReportTestCase> filter) {
return failureDetails.parallelStream()
.filter(filter)
.map(tc -> {
String failureMsg = tc.getFailureMessage() == null ? "" : tc.getFailureMessage();
failureMsg = failureMsg.length() < FAILURE_MSG_LENGTH ?
failureMsg
: failureMsg.substring(0, FAILURE_MSG_LENGTH) + "...";
TestResult.TestCaseResult tcr = new TestResult.TestCaseResult();
tcr.className = tc.getClassName();
tcr.methodName = tc.getName();
tcr.failureMessage = failureMsg;
tcr.failingSince = "0"; // todo add historical data of the test cases.
return tcr;
})
.collect(Collectors.toList());
}
/**
* 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>");
}