package test.junitreports;
import org.testng.ITestContext;
import org.testng.reporters.JUnitXMLReporter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
public class LocalJUnitXMLReporter extends JUnitXMLReporter implements TestsuiteRetriever {
private List<Testsuite> testsuites = new ArrayList<>();
protected void generateReport(ITestContext context) {
super.generateReport(context);
String dir = context.getOutputDirectory();
File directory = new File(dir);
File[] files = directory.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
testsuites.addAll(getSuites(files));
}
public Testsuite getTestsuite(String name) {
for (Testsuite suite : testsuites) {
if (suite.getName().equals(name)) {
return suite;
}
}
return null;
}
static List<Testsuite> getSuites(File[] files) {
List<Testsuite> testsuites = new ArrayList<>();
if (files != null) {
for (File file : files) {
TestsuiteXmlParser parser = new TestsuiteXmlParser();
try {
testsuites.add(parser.parse("", new FileInputStream(file), false));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
return testsuites;
}
}