package hudson.plugins.testng.parser; import java.net.URL; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Map; import hudson.plugins.testng.CommonUtil; import hudson.plugins.testng.Constants; import hudson.plugins.testng.results.MethodResult; import hudson.plugins.testng.results.PackageResult; import hudson.plugins.testng.results.TestNGResult; import junit.framework.Assert; import org.junit.Test; public class TestParser { @Test public void testTestngXmlWithExistingResultXml() { URL resource = CommonUtil.getResource(Constants.TESTNG_XML_PRECHECKINS); Assert.assertNotNull(resource); TestNGResult results = CommonUtil.getResults(resource.getFile()); Assert.assertFalse("Collection shouldn't have been empty", results.getTestList().isEmpty()); } @Test public void testTestngXmlWithSameTestNameDiffSuites() { URL resource = CommonUtil.getResource(Constants.TESTNG_XML_SAME_TEST_NAME); Assert.assertNotNull(resource); TestNGResult results = CommonUtil.getResults(resource.getFile()); Assert.assertFalse("Collection shouldn't have been empty", results.getTestList().isEmpty()); Assert.assertEquals(2, results.getTestList().size()); results.tally(); Assert.assertEquals(1, results.getPackageNames().size()); Assert.assertEquals(3, results.getPackageMap().values().iterator().next().getChildren().size()); Assert.assertEquals(4, results.getPassCount()); Assert.assertEquals(4, results.getPassedTests().size()); } @Test public void testTestngXmlWithExistingResultXmlGetsTheRightDurations() { URL resource = CommonUtil.getResource(Constants.TESTNG_XML_DATAPROVIDER); Assert.assertNotNull(resource); TestNGResult results = CommonUtil.getResults(resource.getFile()); Assert.assertFalse("Collection shouldn't have been empty", results.getTestList().isEmpty()); // This test assumes that there is only 1 package in // sample-testng-dp-result that contains tests that add to 12 ms results.tally(); Map<String, PackageResult> packageResults = results.getPackageMap(); Assert.assertEquals(1, packageResults.values().size()); PackageResult result = packageResults.values().iterator().next(); Assert.assertEquals("org.jenkins", result.getName()); //durations are all in seconds Assert.assertEquals(0.009f, result.getDuration()); } @Test public void testTestngXmlWithNonExistingResultXml() { TestNGResult results = CommonUtil.getResults("/invalid/path/to/file/new-test-result.xml"); Assert.assertTrue("Collection should have been empty. Number of results : " + results.getTestList().size(), results.getTestList().isEmpty()); } @Test public void parseTestNG() { TestNGResult results = CommonUtil.getResults(CommonUtil.getResource(Constants.TESTNG_XML_TESTNG).getFile()); results.tally(); } @Test public void testParseEmptyException() { TestNGResult results = CommonUtil.getResults(CommonUtil.getResource(Constants.TESTNG_XML_EMPTY_EXCEPTION).getFile()); results.tally(); Assert.assertEquals(1, results.getPassCount()); MethodResult mr = results.getPassedTests().get(0); Assert.assertEquals("$java.lang.IllegalStateException$$EnhancerByMockitoWithCGLIB$$c0ded2d3", mr.getException().getExceptionName()); } @Test public void testDateParser() throws ParseException { //example of date format used in testng report String dateString = "2010-07-20T11:49:17Z"; SimpleDateFormat sdf = new SimpleDateFormat(ResultsParser.DATE_FORMAT); sdf.parse(dateString); } @Test public void testReporterOutputForMethods() throws ParseException { String filename = Constants.TESTNG_XML_REPORTER_LOG_OUTPUT; URL resource = TestParser.class.getClassLoader().getResource(filename); Assert.assertNotNull(resource); TestNGResult results = CommonUtil.getResults(resource.getFile()); Assert.assertFalse("Collection shouldn't have been empty", results.getTestList().isEmpty()); Assert.assertEquals(1, results.getTestList().size()); results.tally(); Assert.assertEquals(1, results.getPackageNames().size()); Assert.assertEquals(1, results.getPackageMap().values().iterator().next().getChildren().size()); Assert.assertEquals(1, results.getPassCount()); Assert.assertEquals(1, results.getPassedTests().size()); Assert.assertEquals(1, results.getFailedTests().size()); Assert.assertNotNull(results.getFailedTests().get(0).getException()); Assert.assertNotNull(results.getFailedTests().get(0).getReporterOutput()); Assert.assertEquals("Some Reporter.log() statement<br/>Another Reporter.log() statement<br/>", results.getFailedTests().get(0).getReporterOutput()); Assert.assertNull(results.getPassedTests().get(0).getReporterOutput()); } }