package test.reports;
import org.testng.Assert;
import org.testng.ITestNGListener;
import org.testng.TestNG;
import org.testng.annotations.Test;
import org.testng.reporters.FailedReporter;
import org.testng.xml.Parser;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
import org.xml.sax.SAXException;
import test.SimpleBaseTest;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collection;
public class FailedReporterTest extends SimpleBaseTest {
@Test
public void failedFile() throws ParserConfigurationException, SAXException, IOException {
XmlSuite xmlSuite = createXmlSuite("Suite");
xmlSuite.getParameters().put("n", "42");
XmlTest xmlTest = createXmlTest(xmlSuite, "Test");
xmlTest.addParameter("o", "43");
XmlClass xmlClass = createXmlClass(xmlTest, SimpleFailedSample.class);
xmlClass.getLocalParameters().put("p", "44");
TestNG tng = create(xmlSuite);
Path temp = Files.createTempDirectory("tmp");
tng.setOutputDirectory(temp.toAbsolutePath().toString());
tng.addListener((ITestNGListener) new FailedReporter());
tng.run();
Collection<XmlSuite> failedSuites =
new Parser(temp.resolve(FailedReporter.TESTNG_FAILED_XML).toAbsolutePath().toString()).parse();
XmlSuite failedSuite = failedSuites.iterator().next();
Assert.assertEquals("42", failedSuite.getParameter("n"));
XmlTest failedTest = failedSuite.getTests().get(0);
Assert.assertEquals("43", failedTest.getParameter("o"));
XmlClass failedClass = failedTest.getClasses().get(0);
Assert.assertEquals("44", failedClass.getAllParameters().get("p"));
}
}