package com.occamlab.te.spi.executors.testng;
import java.util.List;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ReporterConfig;
import org.testng.reporters.XMLReporter;
import org.testng.reporters.XMLReporterConfig;
import org.testng.xml.XmlSuite;
/**
* A basic XML reporter that suppresses stack traces and writes the test results
* to a single file (testng-results.xml) in the specified output directory.
*
* @see <a
* href="http://testng.org/doc/documentation-main.html#logging-xml-reports">
* TestNG documentation, 6.2.5</a>
*/
public final class BasicXMLReporter implements IReporter {
private XMLReporter reporter;
public BasicXMLReporter() {
this.reporter = createCustomXMLReporter();
}
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
String outputDirectory) {
this.reporter.generateReport(xmlSuites, suites, outputDirectory);
}
/**
* Creates an XML reporter that suppresses stack traces and includes test
* result attributes (if set).
*
* @return A customized reporter that generates an XML representation of the
* test results. The document element is <testng-results>.
*/
XMLReporter createCustomXMLReporter() {
// config data syntax: "class-name:prop1=val1,prop2=val2"
StringBuilder reporterConfig = new StringBuilder(
XMLReporter.class.getName() + ":");
reporterConfig.append("stackTraceOutputMethod=").append(
XMLReporterConfig.STACKTRACE_NONE);
reporterConfig.append(",").append("generateTestResultAttributes=true");
reporterConfig.append(",").append("generateGroupsAttribute=true");
ReporterConfig reporterConf = ReporterConfig.deserialize(reporterConfig
.toString());
return (XMLReporter) reporterConf.newReporterInstance();
}
}