private void writeJunitReport()

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);
        }
    }