Best Testng code snippet using org.testng.reporters.TestHTMLReporter.onStart
Source:TestngListener.java
...5* @method : onTestSuccess()6* @method : onTestFailure()7* @method : onTestSkipped()8* @method : onTestFailedButWithinSuccessPercentage() 9* @method : onStart()10* @method : onFinish()11* @method 12*/13package com.test.baselib;14import java.io.File;15import java.io.FileOutputStream;16import java.io.IOException;17import java.io.OutputStream;18import java.text.SimpleDateFormat;19import java.util.ArrayList;20import java.util.Date;21import java.util.HashMap;22import org.apache.commons.io.FileUtils;23import org.apache.log4j.Logger;24import org.apache.poi.hssf.usermodel.HSSFSheet;25import org.apache.poi.hssf.usermodel.HSSFWorkbook;26import org.apache.xmlbeans.impl.tool.XSTCTester.TestCase;27import org.apache.xmlbeans.impl.tool.XSTCTester.TestCaseResult;28import org.openqa.selenium.OutputType;29import org.openqa.selenium.TakesScreenshot;30import org.testng.ITestContext;31import org.testng.ITestListener;32import org.testng.ITestResult;33import org.testng.TestException;34import org.testng.internal.TestResult;35import org.testng.reporters.TestHTMLReporter;36import org.testng.xml.XmlSuite;37import org.uncommons.reportng.JUnitXMLReporter.TestClassResults;38public class TestngListener implements ITestListener 39{40 public Logger qrLog;41 public static int iPassCount=0;42 public static int iFailCount=0;43 public static int iSkippedCount=0;44 public static ArrayList sTestName= new ArrayList<String>();45 public static ArrayList sStatus= new ArrayList<String>();46 public static String sSheet1="Results";47 public static String sSheet2="Test Status";48 public static File reportLocation;49 public static File sResults;50 public static File sLogs;51 public static File sScreenShots;52 public static String pdfngreportPath=BaseLib.sDirPath+"\\pdfngreport.properties";53 public static String pdfScreenShotsPAth;54 int cnt=0;55 static int i=0;56 public TestngListener() throws IOException 57 {58 Date date = new Date();59 SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy_hh_mm_ss");60 String sdate1 = sdf.format(date);61 System.setProperty("sFileName",sdate1);62 63 reportLocation=new File(BaseLib.sDirPath+"\\..\\Reports\\TestHouzifyReports"+sdate1);64 sResults=new File(reportLocation.getAbsolutePath()+"\\Results");65 sLogs=new File(reportLocation.getAbsolutePath()+"\\Logs");66 sScreenShots=new File(reportLocation.getAbsolutePath()+"\\ScreenShots");67 GenericLib.sFile=sResults.getAbsolutePath()+"\\TestResult_"; 68 69 FileUtils.forceMkdir(reportLocation);70 FileUtils.forceMkdir(sResults);71 FileUtils.forceMkdir(sLogs);72 FileUtils.forceMkdir(sScreenShots);73 qrLog= Logger.getLogger(this.getClass());74 try{75 System.out.println();76 GenericLib.setCongigValue(pdfngreportPath,"pdfreport.outputdir",reportLocation.getAbsolutePath().replace("\\","/"));77 GenericLib.setCongigValue(pdfngreportPath,"pdfreport.selenium.failed.test.screenshot.outputdir",sScreenShots.getAbsolutePath().replace("\\","/"));78 GenericLib.setCongigValue(pdfngreportPath,"pdfreport.pie.chart.type","normal");79 GenericLib.sFile=GenericLib.sFile+sdate1+".xlsx";80 81 OutputStream fos = new FileOutputStream(GenericLib.sFile);82 HSSFWorkbook hwb = new HSSFWorkbook();83 HSSFSheet sheet = hwb.createSheet(sSheet1);84 hwb.createSheet(sSheet2);85 FileOutputStream fileOut = new FileOutputStream(GenericLib.sFile);86 hwb.write(fos);87 fileOut.close();88 }89 catch(Exception e)90 {91 e.printStackTrace();92 }93 }94 95 public void onTestStart(ITestResult result) 96 {97 qrLog.info("TESTCASE ID = "+result.getName().toString()+" ");98 }99 100 public void onTestSuccess(ITestResult result) 101 {102 GenericLib.setStatus(result.getName().toString(), "Passed",sTestName,sStatus);103 qrLog.info("TEST STATUS = PASSED"+" ");104 qrLog.info("___________________________________________________");105 qrLog.info(" ");106 107 }108 public void onTestFailure(ITestResult result) 109 {110 Date date = new Date();111 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_hh_mm_ss");112 String sdate = sdf.format(date);113 114 String sClass=result.getTestClass().getRealClass().toString();115 sClass= sClass.replace("class ", "");116 117 String sPackage=result.getTestClass().getRealClass().getPackage().toString();118 sPackage = sPackage.replace("package ", "");119 120 String sImage = sClass.replace(sPackage+".","");121 sImage = sImage+"_"+result.getName().toString();122 123 Object obj=result.getInstance();124 BaseLib baseLib = (BaseLib)obj;125 qrLog.error("TEST STATUS = FAILED"+" ");126 qrLog.info("___________________________________________________");127 qrLog.info(" ");128 File imgFile = ((TakesScreenshot) baseLib.driver).getScreenshotAs(OutputType.FILE);129 System.out.println(imgFile.getAbsolutePath());130 try131 {132 FileUtils.copyFile(imgFile, new File(sScreenShots.getAbsolutePath()+"\\"+sImage+".png"));133 } catch (IOException e) {134 e.printStackTrace();135 }136 GenericLib.setStatus(result.getName().toString(), "Failed",sTestName,sStatus); 137 }138 public void onTestSkipped(ITestResult result) 139 {140 qrLog.error("TEST STATUS = SKIPPED"+" ");141 qrLog.info("___________________________________________________");142 qrLog.info(" ");143 GenericLib.setStatus(result.getName(), "Skipped",sTestName,sStatus);144 }145 146 public void onTestFailedButWithinSuccessPercentage(ITestResult result) 147 {148 qrLog.warn("");149 }150 public void onStart(ITestContext context) 151 {152 String suiteName = context.getCurrentXmlTest().toString();153 suiteName=suiteName.substring(suiteName.lastIndexOf("scripts"), suiteName.lastIndexOf("Test] ")).replace("scripts.","");154 qrLog.info("###################### START OF THE -"+ suiteName+"Test ######################");155 }156 157 public void onFinish(ITestContext context) 158 {159 String suiteName = context.getCurrentXmlTest().toString();160 suiteName=suiteName.substring(suiteName.lastIndexOf("scripts"), suiteName.lastIndexOf("Test] ")).replace("scripts.","");161 GenericLib.toWriteIntoExcel(sTestName,sStatus);162 qrLog.info("###################### END OF THE -"+ suiteName+"Test ######################");163 qrLog.info(" ");164 qrLog.info(" ");...
Source:RemoteTestNG.java
...133 public void onFinish(ISuite suite) {134 m_messageSender.sendMessage(new SuiteMessage(suite, false /*start*/));135 }136 @Override137 public void onStart(ISuite suite) {138 m_messageSender.sendMessage(new SuiteMessage(suite, true /*start*/));139 }140 }141 private static class DelegatingTestRunnerFactory implements ITestRunnerFactory {142 private final ITestRunnerFactory m_delegateFactory;143 private final StringMessageSenderHelper m_messageSender;144 DelegatingTestRunnerFactory(ITestRunnerFactory trf, StringMessageSenderHelper smsh) {145 m_delegateFactory= trf;146 m_messageSender= smsh;147 }148 @Override149 public TestRunner newTestRunner(ISuite suite, XmlTest test,150 List<IInvokedMethodListener> listeners) {151 TestRunner tr = m_delegateFactory.newTestRunner(suite, test, listeners);...
Source:Reporting.java
...21 public ExtentReports extent;22 public ExtentTest logger;23 24 25 public void onStart(ITestContext testContext)26 {27 String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());//time stamp28 String repName="Test-Report-"+timeStamp+".html";29 30 htmlReporter=new ExtentHtmlReporter(System.getProperty("user.dir")+ "/test-output/"+repName);//specify location of the report31 htmlReporter.loadXMLConfig(System.getProperty("user.dir")+ "/extent-config.xml");32 33 extent=new ExtentReports();34 35 extent.attachReporter(htmlReporter);36 extent.setSystemInfo("Host name","localhost");37 extent.setSystemInfo("Environemnt","QA");38 extent.setSystemInfo("user","Sam");39 ...
Source:ExtentReporting.java
...21 public ExtentHtmlReporter reporter;22 public ExtentReports report;23 public ExtentTest test;24 25 public void onStart(ITestContext context)26 {27 //Reporter28 reporter = new ExtentHtmlReporter(System.getProperty("user.dir")+"/test-output/Firstreport.html");29 reporter.config().setDocumentTitle("Fullframework Test Project"); // Title of report30 reporter.config().setReportName("Fullframework Test Automation Report"); // name of the report31 reporter.config().setTestViewChartLocation(ChartLocation.TOP); //location of the chart32 reporter.config().setTheme(Theme.DARK);//Theme of the report33 //Report34 report = new ExtentReports();35 report.attachReporter(reporter);36 report.setSystemInfo("Automation Engineer", "Priya Tayal");37 report.setSystemInfo("Environment", "QA");38 }39 public void onTestSuccess(ITestResult result)...
onStart
Using AI Code Generation
1import org.testng.reporters.TestHTMLReporter2import org.testng.reporters.XMLReporter3import org.testng.reporters.EmailableReporter24import org.testng.TestNG5import org.testng.xml.XmlSuite6import org.testng.xml.XmlTest7import org.testng.xml.XmlClass8import org.testng.xml.XmlInclude9import org.testng.xml.XmlPackage10import org.testng.xml.XmlGroups11import org.testng.xml.XmlGroup12import org.testng.xml.XmlMethodSelector13def test = new XmlTest(new XmlSuite())14test.setName("test")15test.setVerbose(2)16test.setPreserveOrder("true")17test.setParallel(XmlSuite.ParallelMode.METHODS)18test.setThreadCount(1)19test.setXmlPackages([new XmlPackage("com.test")])20test.setXmlClasses([new XmlClass("com.test.Test")])21def testng = new TestNG()22testng.setXmlSuites([test.getSuite()])23testng.setTestSuites([test.getSuite().getFileName()])24testng.setUseDefaultListeners(false)25testng.addListener(new TestHTMLReporter())26testng.addListener(new XMLReporter())27testng.addListener(new EmailableReporter2())28testng.run()29import java.io.File30import java.io.PrintWriter31import java.nio.file.Files32import java.nio.file.Paths33import java.nio.file.StandardCopyOption34import java.nio.file.StandardOpenOption35def customCss = """body { background-color: #f0f0f0; }36#banner { background-color: #f0f0f0; }37#banner h1 { color: #000000; }38#banner h2 { color: #000000; }39#banner h3 { color: #000000; }40#banner h4 { color: #000000; }41#banner h5 { color: #000000; }42#banner h6 { color: #000000; }43#banner .version { color: #000000; }44#banner .logo { background-color: #f0f0f0; }45#banner .logo a { color: #000000; }46#banner .logo a:hover { color: #000000; }47#banner .logo a:visited { color: #000000; }48#banner .logo a:active { color: #000000; }49#banner .logo img { background-color: #
onStart
Using AI Code Generation
1public void onStart(ITestContext context) {2 String logFileName = getOutputDirectory(context) + File.separatorChar3 + context.getName() + ".log";4 m_out.println("<h1>TestNG Report</h1>");5 m_out.println("<h2>Test Log</h2>");6 m_out.println("<a href=\"" + logFileName + "\">Log File</a>");7 m_out.println("<h2>Test Results</h2>");8 m_out.println("<table border=\"1\">");9 m_out.println("<tr>");10 m_out.println("<th>Test</th>");11 m_out.println("<th>Duration (ms)</th>");12 m_out.println("<th>Result</th>");13 m_out.println("</tr>");14}15public void onTestSuccess(ITestResult tr) {16 m_out.println("<tr>");17 m_out.println("<td>" + tr.getName() + "</td>");18 m_out.println("<td>" + (tr.getEndMillis() - tr.getStartMillis()) + "</td>");19 m_out.println("<td><font color=\"green\">PASSED</font></td>");20 m_out.println("<td>" + tr.getTestContext().getName() + ".log</td>");21 m_out.println("</tr>");22}23public void onTestFailure(ITestResult tr) {24 m_out.println("<tr>");25 m_out.println("<td>" + tr.getName() + "</td>");26 m_out.println("<td>" + (tr.getEndMillis() - tr.getStartMillis()) + "</td>");27 m_out.println("<td><font color=\"red\">FAILED</font></td>");28 m_out.println("<td>" + tr.getTestContext().getName() + ".log</td>");29 m_out.println("</tr>");30}
Getting into testing
How to fix the error org.testng.eclipse.maven.MavenTestNGLaunchConfigurationProvider.getClasspath(Lorg/eclipse/debug/core/ILaunchConfiguration;)
Reading data from file using DataProvider in testng
How do I stop automation if 50% test methods are failed in testng?
Run @AfterMethod only when my @Test is passed, not if @Test fails
Is there way to span dependencies across Tests in TestNG?
Selenium: Run Java code with different URL for three environments
Is there a possible way to run two .xml files in testng.xml parallel?
Custom test method name in TestNG reports
How to use @FindBy annotation in Selenium WebDriver
Unit testing is writing code (i.e. test code) that passes known inputs into code under test and then validating the code under test returns expected outputs. It's the most granular testing you can perform on an application. To make it easier, usually a unit testing framework is used. For Java, JUnit is the most popular, but TestNG is also notable.
Unit testing frameworks provide tools for test execution, validation and results reporting. For your setup, Eclipse has built in support for JUnit. Eclipse is able to automatically detect tests, compile tests and code under test, execute tests, and report results within the IDE. Furthermore, failures are reported as clickable stack trace information that loads the corresponding file at the given line number.
That you're also working with Hibernate, suggests you also investigate a mock object framework as well - such as jMock. Mock objects are usually substituted as part of a code under tests's composition and serve two purposes: (1) returning known outputs and (2) recording they've been called and how so that unit tests can introspect that information as part of validation.
The ability to use Mock objects to make testing easier is predicated on dependency injection. That is other entities that compose the object under test. The idea is decoupling dependencies (e.g. Hibernate) to focus on testing algorithms that manipulate that data you're working with.
However, if you've got code that is not easily refactored, or perhaps you want to validate database code, you can also test Hibernate interaction as well. In that case you want a database in a known state. Three approaches come to mind:
try{} finally{}
, where the latter always rolls back the transaction.Check out the latest blogs from LambdaTest on this topic:
This article is a part of our Content Hub. For more in-depth resources, check out our content hub on A Detailed TestNG Tutorial.
This article is a part of our Content Hub. For more in-depth resources, check out our content hub on Selenium Python Tutorial and Selenium pytest Tutorial.
This article is a part of our Content Hub. For more in-depth resources, check out our content hub on Jenkins Tutorial.
QAOps refers to maintaining software quality by approaching it with a DevOps mindset. You must have come across the term “DevOps”. DevOps refers to Software Development (Dev) and IT Operations (Ops) and establishes a relationship between development and IT Operations. The purpose of introducing DevOps as a business practice is to improve the collaboration between the two business units.
Are you comfortable pushing a buggy release to a staging environment?
TestNG is a Java-based open-source framework for test automation that includes various test types, such as unit testing, functional testing, E2E testing, etc. TestNG is in many ways similar to JUnit and NUnit. But in contrast to its competitors, its extensive features make it a lot more reliable framework. One of the major reasons for its popularity is its ability to structure tests and improve the scripts' readability and maintainability. Another reason can be the important characteristics like the convenience of using multiple annotations, reliance, and priority that make this framework popular among developers and testers for test design. You can refer to the TestNG tutorial to learn why you should choose the TestNG framework.
You can push your abilities to do automated testing using TestNG and advance your career by earning a TestNG certification. Check out our TestNG certification.
Watch this complete tutorial to learn how you can leverage the capabilities of the TestNG framework for Selenium automation testing.
Get 100 minutes of automation test minutes FREE!!