in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1757:1816]
private void writeJunitReport(BuildJob buildJob, String safeFileName) throws MojoExecutionException {
File reportFile = new File(reportsDirectory, "TEST-" + safeFileName + ".xml");
Xpp3Dom testsuite = new Xpp3Dom("testsuite");
testsuite.setAttribute("name", junitPackageName + "." + safeFileName);
testsuite.setAttribute("time", Float.toString(buildJob.getTime()));
// set default value for required attributes
testsuite.setAttribute("tests", "1");
testsuite.setAttribute("errors", "0");
testsuite.setAttribute("skipped", "0");
testsuite.setAttribute("failures", "0");
Xpp3Dom testcase = new Xpp3Dom("testcase");
testsuite.addChild(testcase);
switch (buildJob.getResult()) {
case BuildJob.Result.SUCCESS:
break;
case BuildJob.Result.SKIPPED:
testsuite.setAttribute("skipped", "1");
// adding the failure element
Xpp3Dom skipped = new Xpp3Dom("skipped");
testcase.addChild(skipped);
skipped.setValue(buildJob.getFailureMessage());
break;
case BuildJob.Result.ERROR:
testsuite.setAttribute("errors", "1");
break;
default:
testsuite.setAttribute("failures", "1");
// adding the failure element
Xpp3Dom failure = new Xpp3Dom("failure");
testcase.addChild(failure);
failure.setAttribute("message", buildJob.getFailureMessage());
}
testcase.setAttribute("classname", junitPackageName + "." + safeFileName);
testcase.setAttribute("name", safeFileName);
testcase.setAttribute("time", Float.toString(buildJob.getTime()));
Xpp3Dom systemOut = new Xpp3Dom("system-out");
testcase.addChild(systemOut);
File buildLogFile = buildJob.getBuildlog() != null ? new File(buildJob.getBuildlog()) : null;
if (buildLogFile != null && buildLogFile.exists()) {
getLog().debug("fileLogger:" + buildLogFile);
try {
systemOut.setValue(FileUtils.fileRead(buildLogFile));
} catch (IOException e) {
throw new MojoExecutionException("Failed to read logfile " + buildLogFile, e);
}
} else {
getLog().debug(safeFileName + "not exists buildLogFile = " + buildLogFile);
}
try (FileOutputStream fos = new FileOutputStream(reportFile);
Writer osw = new OutputStreamWriter(fos, buildJob.getModelEncoding())) {
Xpp3DomWriter.write(osw, testsuite);
} catch (IOException e) {
throw new MojoExecutionException("Failed to write JUnit build report " + reportFile, e);
}
}