diff --git a/testng/src/test/java/com/baeldung/reports/CustomisedListener.java b/testng/src/test/java/com/baeldung/reports/CustomisedListener.java index 6dc3991e503c..1ec5629cdfe7 100644 --- a/testng/src/test/java/com/baeldung/reports/CustomisedListener.java +++ b/testng/src/test/java/com/baeldung/reports/CustomisedListener.java @@ -7,31 +7,32 @@ import org.testng.ITestResult; public class CustomisedListener implements ITestListener { - private static final Logger LOGGER = LoggerFactory.getLogger("TEST_REPORT"); + private static final Logger LOGGER = LoggerFactory.getLogger("CUSTOM_LOGS"); @Override public void onFinish(ITestContext context) { LOGGER.info("PASSED TEST CASES"); context.getPassedTests() - .getAllResults() - .stream() - .forEach(result -> { - LOGGER.info(result.getName()); - }); + .getAllResults() + .stream() + .forEach(result -> { + LOGGER.info(result.getName()); + }); LOGGER.info("FAILED TEST CASES"); context.getFailedTests() - .getAllResults() - .stream() - .forEach(result -> { - LOGGER.info(result.getName()); - }); - LOGGER.info("Test completed on: " + context.getEndDate().toString()); + .getAllResults() + .stream() + .forEach(result -> { + LOGGER.info(result.getName()); + }); + LOGGER.info("Test completed on: " + context.getEndDate() + .toString()); } @Override public void onStart(ITestContext arg0) { LOGGER.info("Started testing on: " + arg0.getStartDate() - .toString()); + .toString()); } @Override @@ -54,13 +55,14 @@ public void onTestSkipped(ITestResult arg0) { @Override public void onTestStart(ITestResult arg0) { - LOGGER.info("Testing: " + arg0.getName() + " " + arg0.getStartMillis()); + LOGGER.info("Testing: " + arg0.getName()); } @Override public void onTestSuccess(ITestResult arg0) { - LOGGER.info("Tested: " + arg0.getName() + " " + arg0.getEndMillis()); + long timeTaken = ((arg0.getEndMillis() - arg0.getStartMillis())); + LOGGER.info("Tested: " + arg0.getName() + " Time taken:" + timeTaken + " ms"); } diff --git a/testng/src/test/java/com/baeldung/reports/CustomisedReports.java b/testng/src/test/java/com/baeldung/reports/CustomisedReports.java index 07ba2162cc7a..7e303035aaf1 100644 --- a/testng/src/test/java/com/baeldung/reports/CustomisedReports.java +++ b/testng/src/test/java/com/baeldung/reports/CustomisedReports.java @@ -1,50 +1,73 @@ package com.baeldung.reports; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.testng.IReporter; +import org.testng.IResultMap; import org.testng.ISuite; import org.testng.ISuiteResult; import org.testng.ITestContext; +import org.testng.ITestResult; import org.testng.xml.XmlSuite; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; import java.util.List; import java.util.Map; +import java.util.Set; public class CustomisedReports implements IReporter { - private static final Logger LOGGER = LoggerFactory.getLogger("TEST_REPORT"); + private PrintWriter reportWriter; - @Override public void generateReport(List xmlSuites, List suites, String outputDirectory) { + new File(outputDirectory).mkdirs(); + try { + reportWriter = new PrintWriter(new BufferedWriter(new FileWriter(new File(outputDirectory, "my-report.html")))); + } catch (IOException e) { + e.printStackTrace(); + } + String resultRow = "%s%s%s%s%s"; + initReportTemplate(); + for (ISuite suite : suites) { + Map suiteResults = suite.getResults(); + for (String testName : suiteResults.keySet()) { + ISuiteResult suiteResult = suiteResults.get(testName); + ITestContext testContext = suiteResult.getTestContext(); - suites.stream() - .forEach(suite -> { - String suiteName = suite.getName(); - Map suiteResults = suite.getResults(); - suiteResults.values() - .stream() - .forEach(result -> { - ITestContext context - = ((ISuiteResult) result).getTestContext(); - - LOGGER.info("Passed tests for suite '" - + suiteName + "' is:" - + context.getPassedTests() - .getAllResults() - .size()); - LOGGER.info("Failed tests for suite '" - + suiteName + "' is:" - + context.getFailedTests() - .getAllResults() - .size()); - LOGGER.info("Skipped tests for suite '" - + suiteName + "' is:" - + context.getSkippedTests() - .getAllResults() - .size()); - }); - }); + IResultMap failedResult = testContext.getFailedTests(); + Set testsFailed = failedResult.getAllResults(); + for (ITestResult testResult : testsFailed) { + reportWriter.println(String.format(resultRow, "danger", suite.getName(), testName, testResult.getName(), "FAILED", "NA")); + } + IResultMap passResult = testContext.getPassedTests(); + Set testsPassed = passResult.getAllResults(); + for (ITestResult testResult : testsPassed) { + reportWriter.println(String.format(resultRow, "success", suite.getName(), testName, testResult.getName(), "PASSED", String.valueOf(testResult.getEndMillis() - testResult.getStartMillis()))); + } + + IResultMap skippedResult = testContext.getSkippedTests(); + Set testsSkipped = skippedResult.getAllResults(); + for (ITestResult testResult : testsSkipped) { + reportWriter.println(String.format(resultRow, "warning", suite.getName(), testName, testResult.getName(), "SKIPPED", "NA")); + } + + } + } + finishReportTemplate(); + reportWriter.flush(); + reportWriter.close(); } + private void initReportTemplate() { + reportWriter.println( + "" + "" + "My Custom Report" + "" + "" + + "" + "" + "
"); + reportWriter.println("" + "" + "" + "" + "" + "" + ""); + } + + private void finishReportTemplate() { + reportWriter.println(" "); + } }
SuiteTestMethodStatusExecution Time(ms)