diff --git a/pom.xml b/pom.xml index 4eecc16..559d717 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,8 @@ UTF-8 - 1.8 - 1.8 + 21 + 21

x

@@ -29,7 +29,7 @@ org.testng testng - 6.14.3 + 7.10.2 test @@ -62,7 +62,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + 3.5.2 ./src/test/resources/suites/testng.xml diff --git a/src/test/java/example/example/listeners/SuiteSummaryListener.java b/src/test/java/example/example/listeners/SuiteSummaryListener.java new file mode 100644 index 0000000..46dadca --- /dev/null +++ b/src/test/java/example/example/listeners/SuiteSummaryListener.java @@ -0,0 +1,51 @@ +package example.example.listeners; + +import org.testng.ISuite; +import org.testng.ISuiteListener; +import org.testng.ISuiteResult; +import org.testng.ITestContext; + +import example.example.util.LoggerUtil; +import example.example.util.MailUtil; +import example.example.util.TestProperties; + +/** + * Suite-level listener that loads global properties before the suite runs and, + * once the whole suite has finished, logs an execution summary and emails the + * report. This replaces the former {@code @BeforeSuite}/{@code @AfterSuite} + * hooks in {@code BaseTest}: TestNG 7 no longer supports native parameter + * injection into {@code @AfterSuite} methods, and a suite listener guarantees + * the summary runs exactly once per suite while aggregating results across every + * {@code } tag. + */ +public class SuiteSummaryListener implements ISuiteListener { + + @Override + public void onStart(ISuite suite) { + LoggerUtil.log("************************** Test Execution Started ************************************"); + TestProperties.loadAllPropertie(); + } + + @Override + public void onFinish(ISuite suite) { + int total = 0; + int passed = 0; + int failed = 0; + int skipped = 0; + for (ISuiteResult result : suite.getResults().values()) { + ITestContext context = result.getTestContext(); + total += context.getAllTestMethods().length; + passed += context.getPassedTests().size(); + failed += context.getFailedTests().size(); + skipped += context.getSkippedTests().size(); + } + LoggerUtil.log("Total number of testcases : " + total); + LoggerUtil.log("Number of testcases Passed : " + passed); + LoggerUtil.log("Number of testcases Failed : " + failed); + LoggerUtil.log("Number of testcases Skipped : " + skipped); + boolean mailSent = MailUtil.sendMail(total, passed, failed, skipped); + LoggerUtil.log("Mail sent : " + mailSent); + LoggerUtil.log("************************** Test Execution Finished ************************************"); + } + +} diff --git a/src/test/java/example/example/tests/BaseTest.java b/src/test/java/example/example/tests/BaseTest.java index b962ab1..cf55964 100644 --- a/src/test/java/example/example/tests/BaseTest.java +++ b/src/test/java/example/example/tests/BaseTest.java @@ -1,23 +1,17 @@ package example.example.tests; -import java.util.concurrent.TimeUnit; +import java.time.Duration; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; -import org.testng.ITestContext; import org.testng.annotations.AfterClass; -import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeSuite; import org.testng.annotations.Listeners; import example.example.context.WebDriverContext; import example.example.listeners.LogListener; import example.example.listeners.ReportListener; -import example.example.util.LoggerUtil; -import example.example.util.MailUtil; -import example.example.util.TestProperties; import io.github.bonigarcia.wdm.WebDriverManager; /** @@ -31,35 +25,6 @@ public class BaseTest { /** The driver. */ protected WebDriver driver; - /** - * Global setup. - */ - @BeforeSuite(alwaysRun = true) - public void globalSetup() { - LoggerUtil.log("************************** Test Execution Started ************************************"); - TestProperties.loadAllPropertie(); - } - - /** - * Wrap all up. - * - * @param context the context - */ - @AfterSuite(alwaysRun = true) - public void wrapAllUp(ITestContext context) { - int total = context.getAllTestMethods().length; - int passed = context.getPassedTests().size(); - int failed = context.getFailedTests().size(); - int skipped = context.getSkippedTests().size(); - LoggerUtil.log("Total number of testcases : " + total); - LoggerUtil.log("Number of testcases Passed : " + passed); - LoggerUtil.log("Number of testcases Failed : " + failed); - LoggerUtil.log("Number of testcases Skipped : " + skipped); - boolean mailSent = MailUtil.sendMail(total, passed, failed, skipped); - LoggerUtil.log("Mail sent : " + mailSent); - LoggerUtil.log("************************** Test Execution Finished ************************************"); - } - /** * Setup. */ @@ -74,7 +39,7 @@ protected void setup() { ops.addArguments("--disable-dev-shm-usage"); driver = new ChromeDriver(ops); driver.manage().window().maximize(); - driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); WebDriverContext.setDriver(driver); } diff --git a/src/test/resources/suites/testng.xml b/src/test/resources/suites/testng.xml index b282705..d3ac96d 100644 --- a/src/test/resources/suites/testng.xml +++ b/src/test/resources/suites/testng.xml @@ -1,7 +1,9 @@ - + + +