| package test.failedreporter; |
| |
| import org.testng.Assert; |
| import org.testng.TestNG; |
| import org.testng.annotations.AfterMethod; |
| import org.testng.annotations.BeforeMethod; |
| import org.testng.annotations.Test; |
| import org.testng.collections.Lists; |
| |
| import test.BaseTest; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.List; |
| |
| public class FailedReporterTest extends BaseTest { |
| private File mTempDirectory; |
| |
| @BeforeMethod |
| public void setUp() { |
| File slashTmpDir = new File(System.getProperty("java.io.tmpdir")); |
| mTempDirectory = new File(slashTmpDir, "testng-tmp-" + System.currentTimeMillis() % 1000); |
| mTempDirectory.mkdirs(); |
| mTempDirectory.deleteOnExit(); |
| } |
| |
| @AfterMethod |
| public void tearDown() { |
| deleteDir(mTempDirectory); |
| } |
| |
| @Test |
| public void failedAndSkippedMethodsShouldBeIncluded() throws IOException { |
| testFailedReporter(FailedReporterSampleTest.class, new String[] { "f1", "f2" }, |
| "<include name=\"%s\"" + "\"/>"); } |
| |
| @Test |
| public void failedMethodWithDataProviderShouldHaveInvocationNumbers() throws IOException { |
| testFailedReporter(FailedReporter2SampleTest.class, new String[] { "f1" }, |
| "<include invocationNumbers=\"1\" name=\"%s\"" + "\"/>"); |
| } |
| |
| private void testFailedReporter(Class<?> cls, String[] expectedMethods, String expectedLine) { |
| TestNG tng = new TestNG(); |
| tng.setVerbose(0); |
| tng.setTestClasses(new Class[] { cls }); |
| tng.setOutputDirectory(mTempDirectory.getAbsolutePath()); |
| tng.run(); |
| |
| File failed = new File(mTempDirectory, "testng-failed.xml"); |
| for (String s : expectedMethods) { |
| List<String> resultLines = Lists.newArrayList(); |
| grep(failed, expectedLine.format(s), resultLines); |
| Assert.assertEquals(1, resultLines.size()); |
| } |
| |
| } |
| } |