diff --git a/core-java/src/main/java/com/baeldung/string/RemoveLastChar.java b/core-java/src/main/java/com/baeldung/string/RemoveLastChar.java index c6bb81b133..8d15f0d7f5 100644 --- a/core-java/src/main/java/com/baeldung/string/RemoveLastChar.java +++ b/core-java/src/main/java/com/baeldung/string/RemoveLastChar.java @@ -8,7 +8,7 @@ public class RemoveLastChar { return (s.substring(0, s.length() - 1)); } } - + public static String chop(String s) { if (s == null) { return s; diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderUnitTest.java b/core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java similarity index 83% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderUnitTest.java rename to core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java index 40530ddba5..e6a8f89a16 100644 --- a/core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java @@ -2,7 +2,7 @@ package com.baeldung.stackoverflowerror; import org.junit.Test; -public class AccountHolderUnitTest { +public class AccountHolderManualTest { @Test(expected = StackOverflowError.class) public void whenInstanciatingAccountHolder_thenThrowsException() { AccountHolder holder = new AccountHolder(); diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyUnitTest.java b/core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java similarity index 85% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyUnitTest.java rename to core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java index 480edcf49d..9a53a83b2a 100644 --- a/core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyUnitTest.java +++ b/core-java/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java @@ -1,10 +1,9 @@ package com.baeldung.stackoverflowerror; import static org.junit.Assert.fail; - import org.junit.Test; -public class CyclicDependancyUnitTest { +public class CyclicDependancyManualTest { @Test public void whenInstanciatingClassOne_thenThrowsException() { try { diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionUnitTest.java b/core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java similarity index 92% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionUnitTest.java rename to core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java index c3a210f54f..a262ee86a0 100644 --- a/core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionUnitTest.java +++ b/core-java/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java @@ -2,10 +2,9 @@ package com.baeldung.stackoverflowerror; import static junit.framework.TestCase.assertEquals; import static org.junit.Assert.fail; - import org.junit.Test; -public class InfiniteRecursionWithTerminationConditionUnitTest { +public class InfiniteRecursionWithTerminationConditionManualTest { @Test public void givenPositiveIntNoOne_whenCalcFact_thenThrowsException() { int numToCalcFactorial = 1; diff --git a/core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionUnitTest.java b/core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java similarity index 55% rename from core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionUnitTest.java rename to core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java index a712366ee7..c643da4aeb 100644 --- a/core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionUnitTest.java +++ b/core-java/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java @@ -1,29 +1,33 @@ package com.baeldung.stackoverflowerror; + import org.junit.Test; -public class UnintendedInfiniteRecursionUnitTest { +public class UnintendedInfiniteRecursionManualTest { @Test(expected = StackOverflowError.class) public void givenPositiveIntNoOne_whenCalFact_thenThrowsException() { - int numToCalcFactorial = 1; - UnintendedInfiniteRecursion uir = new UnintendedInfiniteRecursion(); - + int numToCalcFactorial= 1; + UnintendedInfiniteRecursion uir + = new UnintendedInfiniteRecursion(); + uir.calculateFactorial(numToCalcFactorial); } - + @Test(expected = StackOverflowError.class) public void givenPositiveIntGtOne_whenCalcFact_thenThrowsException() { - int numToCalcFactorial = 2; - UnintendedInfiniteRecursion uir = new UnintendedInfiniteRecursion(); - + int numToCalcFactorial= 2; + UnintendedInfiniteRecursion uir + = new UnintendedInfiniteRecursion(); + uir.calculateFactorial(numToCalcFactorial); } - + @Test(expected = StackOverflowError.class) public void givenNegativeInt_whenCalcFact_thenThrowsException() { - int numToCalcFactorial = -1; - UnintendedInfiniteRecursion uir = new UnintendedInfiniteRecursion(); - + int numToCalcFactorial= -1; + UnintendedInfiniteRecursion uir + = new UnintendedInfiniteRecursion(); + uir.calculateFactorial(numToCalcFactorial); } } diff --git a/core-java/src/test/java/com/baeldung/string/RemoveLastCharTest.java b/core-java/src/test/java/com/baeldung/string/RemoveLastCharTest.java index 5ada9c66f2..29cf856da3 100644 --- a/core-java/src/test/java/com/baeldung/string/RemoveLastCharTest.java +++ b/core-java/src/test/java/com/baeldung/string/RemoveLastCharTest.java @@ -2,7 +2,6 @@ package com.baeldung.string; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; - import org.apache.commons.lang3.StringUtils; import org.junit.Test; diff --git a/testng/src/test/java/com/baeldung/reports/CustomisedReports.java b/testng/src/test/java/com/baeldung/reports/CustomisedReports.java index 70810ab0dc..2c57993e0b 100644 --- a/testng/src/test/java/com/baeldung/reports/CustomisedReports.java +++ b/testng/src/test/java/com/baeldung/reports/CustomisedReports.java @@ -10,56 +10,84 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; import java.util.stream.Stream; +import static java.util.stream.Collectors.toList; + public class CustomisedReports implements IReporter { private static final Logger LOGGER = LoggerFactory.getLogger(CustomisedReports.class); + private static final String ROW_TEMPLATE = "%s%s%s%s%s"; + public void generateReport(List xmlSuites, List suites, String outputDirectory) { String reportTemplate = initReportTemplate(); - String resultRow = "%s%s%s%s%s"; - StringBuilder rows = new StringBuilder(); - suites.forEach(suite -> { - Map suiteResults = suite.getResults(); - suiteResults.forEach((testName, suiteResult) -> { - ITestContext testContext = suiteResult.getTestContext(); + final String body = suites + .stream() + .flatMap(suiteToResults()) + .collect(Collectors.joining()); - Stream failedTests = testContext.getFailedTests().getAllResults().stream(); - Stream passedTests = testContext.getPassedTests().getAllResults().stream(); - Stream skippedTests = testContext.getSkippedTests().getAllResults().stream(); - - String suiteName = suite.getName(); - - Stream allTestResults = Stream.concat(Stream.concat(failedTests, passedTests), skippedTests); - generateReportRows(resultRow, rows, testName, suiteName, allTestResults); - }); - }); - reportTemplate = reportTemplate.replaceFirst("", rows.toString() + ""); - saveReportTemplate(outputDirectory, reportTemplate); + saveReportTemplate(outputDirectory, reportTemplate.replaceFirst("", String.format("%s", body))); } - private void generateReportRows(String resultRow, StringBuilder rows, String testName, String suiteName, Stream allTestResults) { - allTestResults - .forEach(testResult -> { - String testReportRow = ""; - if (testResult.getStatus() == ITestResult.FAILURE) { - testReportRow = String.format(resultRow, "danger", suiteName, testName, testResult.getName(), "FAILED", "NA"); - } - if (testResult.getStatus() == ITestResult.SUCCESS) { - testReportRow = String.format(resultRow, "success", suiteName, testName, testResult.getName(), "PASSED", String.valueOf(testResult.getEndMillis() - testResult.getStartMillis())); + private Function> suiteToResults() { + return suite -> suite.getResults().entrySet() + .stream() + .flatMap(resultsToRows(suite)); + } + private Function, Stream> resultsToRows(ISuite suite) { + return e -> { + ITestContext testContext = e.getValue().getTestContext(); + + Set failedTests = testContext + .getFailedTests() + .getAllResults(); + Set passedTests = testContext + .getPassedTests() + .getAllResults(); + Set skippedTests = testContext + .getSkippedTests() + .getAllResults(); + + String suiteName = suite.getName(); + + return Stream + .of(failedTests, passedTests, skippedTests) + .flatMap(results -> generateReportRows(e.getKey(), suiteName, results).stream()); + }; + } + + private List generateReportRows(String testName, String suiteName, Set allTestResults) { + return allTestResults.stream() + .map(testResultToResultRow(testName, suiteName)) + .collect(toList()); + } + + private Function testResultToResultRow(String testName, String suiteName) { + return testResult -> { + switch (testResult.getStatus()) { + case ITestResult.FAILURE: + return String.format(ROW_TEMPLATE, "danger", suiteName, testName, testResult.getName(), "FAILED", "NA"); + + case ITestResult.SUCCESS: + return String.format(ROW_TEMPLATE, "success", suiteName, testName, testResult.getName(), "PASSED", String.valueOf(testResult.getEndMillis() - testResult.getStartMillis())); + + case ITestResult.SKIP: + return String.format(ROW_TEMPLATE, "warning", suiteName, testName, testResult.getName(), "SKIPPED", "NA"); + + default: + return ""; } - if (testResult.getStatus() == ITestResult.SKIP) { - testReportRow = String.format(resultRow, "warning", suiteName, testName, testResult.getName(), "SKIPPED", "NA"); - } - rows.append(testReportRow); - }); + }; } private String initReportTemplate() { String template = null; - byte[] reportTemplate = null; + byte[] reportTemplate; try { reportTemplate = Files.readAllBytes(Paths.get("src/test/resources/reportTemplate.html")); template = new String(reportTemplate, "UTF-8");