Best Testng code snippet using org.testng.junit.JUnitTestRunner.run
Source:JUnitTestRunner.java
...46 m_parentRunner= tr;47 }4849 /**50 * Needed from TestRunner in order to figure out what JUnit test methods were run.51 *52 * @return the list of all JUnit test methods run53 */54 @Override55 public List<ITestNGMethod> getTestMethods() {56 return m_methods;57 }5859 @Override60 public void setTestResultNotifier(ITestResultNotifier notifier) {61 m_parentRunner= notifier;62 }6364 /**65 * @see junit.framework.TestListener#startTest(junit.framework.Test)66 */67 @Override68 public void startTest(Test test) {69 m_tests.put(test, new TestRunInfo(Calendar.getInstance().getTimeInMillis()));70 }717273 /**74 * @see junit.framework.TestListener#addError(junit.framework.Test, java.lang.Throwable)75 */76 @Override77 public void addError(Test test, Throwable t) {78 recordFailure(test, t);79 }8081 /**82 * @see junit.framework.TestListener#addFailure(junit.framework.Test, junit.framework.AssertionFailedError)83 */84 @Override85 public void addFailure(Test test, AssertionFailedError t) {86 recordFailure(test, t);87 }8889 private void recordFailure(Test test, Throwable t) {90 TestRunInfo tri= m_tests.get(test);91 if(null != tri) {92 tri.setThrowable(t);93 }94 }9596 /**97 * @see junit.framework.TestListener#endTest(junit.framework.Test)98 */99 @Override100 public void endTest(Test test) {101 TestRunInfo tri= m_tests.get(test);102 if(null == tri) {103 return; // HINT: this should never happen. How do I protect myself?104 }105106 org.testng.internal.TestResult tr= recordResults(test, tri);107108 runTestListeners(tr, m_parentRunner.getTestListeners());109 }110111 public void setInvokedMethodListeners(List<IInvokedMethodListener> listeners) {112 m_invokedMethodListeners = listeners;113 }114115116 private org.testng.internal.TestResult recordResults(Test test, TestRunInfo tri) {117 JUnitTestClass tc= new JUnit3TestClass(test);118 JUnitTestMethod tm= new JUnit3TestMethod(tc, test);119120 org.testng.internal.TestResult tr= new org.testng.internal.TestResult(tc,121 test,122 tm,123 tri.m_failure,124 tri.m_start,125 Calendar.getInstance().getTimeInMillis(),126 null);127128 if(tri.isFailure()) {129 tr.setStatus(ITestResult.FAILURE);130 m_parentRunner.addFailedTest(tm, tr);131 }132 else {133 m_parentRunner.addPassedTest(tm, tr);134 }135136 InvokedMethod im = new InvokedMethod(test, tm, new Object[0], true, false, tri.m_start, tr);137 m_parentRunner.addInvokedMethod(im);138 m_methods.add(tm);139 for (IInvokedMethodListener l: m_invokedMethodListeners) {140 l.beforeInvocation(im, tr);141 }142143 return tr;144 }145146 private static void runTestListeners(ITestResult tr, List<ITestListener> listeners) {147 for (ITestListener itl : listeners) {148 switch(tr.getStatus()) {149 case ITestResult.SKIP: {150 itl.onTestSkipped(tr);151 break;152 }153 case ITestResult.SUCCESS_PERCENTAGE_FAILURE: {154 itl.onTestFailedButWithinSuccessPercentage(tr);155 break;156 }157 case ITestResult.FAILURE: {158 itl.onTestFailure(tr);159 break;160 }161 case ITestResult.SUCCESS: {162 itl.onTestSuccess(tr);163 break;164 }165166 case ITestResult.STARTED: {167 itl.onTestStart(tr);168 break;169 }170171 default: {172 assert false : "UNKNOWN STATUS:" + tr;173 }174 }175 }176 }177178 /**179 * Returns the Test corresponding to the given suite. This is180 * a template method, subclasses override runFailed(), clearStatus().181 */182 protected Test getTest(Class testClass, String... methods) {183 if (methods.length > 0) {184 TestSuite ts = new TestSuite();185 try {186 Constructor c = testClass.getConstructor(String.class);187 for (String m: methods) {188 try {189 ts.addTest((Test) c.newInstance(m));190 } catch (InstantiationException ex) {191 runFailed(testClass, "abstract class " + ex);192 } catch (IllegalAccessException ex) {193 runFailed(testClass, "constructor is not public " + ex);194 } catch (IllegalArgumentException ex) {195 runFailed(testClass, "actual and formal parameters differ " + ex);196 } catch (InvocationTargetException ex) {197 runFailed(testClass, "exception while instatiating test for method '" + m + "' " + ex);198 }199 }200 } catch (NoSuchMethodException ex) {201 runFailed(testClass, "no constructor accepting String argument found " + ex);202 } catch (SecurityException ex) {203 runFailed(testClass, "security exception " + ex);204 }205 return ts;206 }207 Method suiteMethod = null;208 try {209 suiteMethod = testClass.getMethod(SUITE_METHODNAME, new Class[0]);210 }211 catch (Exception e) {212213 // try to extract a test suite automatically214 return new TestSuite(testClass);215 }216 if (!Modifier.isStatic(suiteMethod.getModifiers())) {217 runFailed(testClass, "suite() method must be static");218219 return null;220 }221 Test test = null;222 try {223 test = (Test) suiteMethod.invoke(null, (Object[]) new Class[0]); // static method224 if (test == null) {225 return test;226 }227 }228 catch (InvocationTargetException e) {229 runFailed(testClass, "failed to invoke method suite():" + e.getTargetException().toString());230231 return null;232 }233 catch (IllegalAccessException e) {234 runFailed(testClass, "failed to invoke method suite():" + e.toString());235236 return null;237 }238239 return test;240 }241242 /**243 * A <code>start</code> implementation that ignores the <code>TestResult</code>244 * @param testClass the JUnit test class245 */246 @Override247 public void run(Class testClass, String... methods) {248 start(testClass, methods);249 }250251 /**252 * Starts a test run. Analyzes the command line arguments and runs the given253 * test suite.254 */255 public TestResult start(Class testCase, String... methods) {256 try {257 Test suite = getTest(testCase, methods);258259 if(null != suite) {260 return doRun(suite);261 }262 else {263 runFailed(testCase, "could not create/run JUnit test suite");264 }265 }266 catch (Exception e) {267 runFailed(testCase, "could not create/run JUnit test suite: " + e.getMessage());268 }269270 return null;271 }272273 protected void runFailed(Class clazz, String message) {274 throw new TestNGException("Failure in JUnit mode for class " + clazz.getName() + ": " + message);275 }276277 /**278 * Creates the TestResult to be used for the test run.279 */280 protected TestResult createTestResult() {281 return new TestResult();282 }283284 protected TestResult doRun(Test suite) {285 TestResult result = createTestResult();286 result.addListener(this);287 suite.run(result);288289 return result;290 }291292 private static class TestRunInfo {293 private final long m_start;294 private Throwable m_failure;295296 public TestRunInfo(long start) {297 m_start= start;298 }299300 public boolean isFailure() {301 return null != m_failure;
...
Source:IJUnitTestRunner.java
...8import org.testng.internal.ClassHelper;9import org.testng.internal.ITestResultNotifier;10import org.testng.internal.Utils;11/**12 * An abstraction interface over JUnit test runners.13 *14 */15public interface IJUnitTestRunner {16 String JUNIT_TESTRUNNER = "org.testng.junit.JUnitTestRunner";17 String JUNIT_4_TESTRUNNER = "org.testng.junit.JUnit4TestRunner";18 void setInvokedMethodListeners(Collection<IInvokedMethodListener> listener);19 void setTestResultNotifier(ITestResultNotifier notifier);20 void run(Class junitTestClass, String... methods);21 List<ITestNGMethod> getTestMethods();22 static IJUnitTestRunner createTestRunner(TestRunner runner) {23 IJUnitTestRunner tr = null;24 try {25 // try to get runner for JUnit 4 first26 Class.forName("org.junit.Test");27 Class<?> clazz = ClassHelper.forName(JUNIT_4_TESTRUNNER);28 if (clazz != null) {29 tr = (IJUnitTestRunner) clazz.newInstance();30 tr.setTestResultNotifier(runner);31 }32 } catch (Throwable t) {33 Utils.log(IJUnitTestRunner.class.getSimpleName(), 2, "JUnit 4 was not found on the classpath");34 try {35 // fallback to JUnit 336 Class.forName("junit.framework.Test");37 Class<?> clazz = ClassHelper.forName(JUNIT_TESTRUNNER);38 if (clazz != null) {39 tr = (IJUnitTestRunner) clazz.newInstance();40 tr.setTestResultNotifier(runner);41 }42 } catch (Exception ex) {43 Utils.log(IJUnitTestRunner.class.getSimpleName(), 2, "JUnit 3 was not found on the classpath");44 // there's no JUnit on the classpath45 throw new TestNGException("Cannot create JUnit runner", ex);46 }47 }48 return tr;49 }50}...
run
Using AI Code Generation
1import org.testng.junit.JUnitTestRunner2import org.testng.TestNG3import org.testng.TestListenerAdapter4import org.testng.xml.XmlSuite5def testng = new TestNG()6testng.setTestClasses([TestClass.class])7testng.run()8import org.testng.TestNG9import org.testng.TestListenerAdapter10import org.testng.xml.XmlSuite11def testng = new TestNG()12testng.setTestClasses([TestClass.class])13testng.run()14import org.testng.TestNG15import org.testng.TestListenerAdapter16import org.testng.xml.XmlSuite17def testng = new TestNG()18testng.setTestClasses([TestClass.class])19testng.run()20import org.testng.TestNG21import org.testng.TestListenerAdapter22import org.testng.xml.XmlSuite23def testng = new TestNG()24testng.setTestClasses([TestClass.class])25testng.run()26import org.testng.TestNG27import org.testng.TestListenerAdapter28import org.testng.xml.XmlSuite29def testng = new TestNG()30testng.setTestClasses([TestClass.class])31testng.run()32import org.testng.TestNG33import org.testng.TestListenerAdapter34import org.testng.xml.XmlSuite35def testng = new TestNG()36testng.setTestClasses([TestClass.class])37testng.run()38import org.testng.TestNG39import org.testng.TestListenerAdapter40import org.testng.xml.XmlSuite41def testng = new TestNG()42testng.setTestClasses([TestClass.class])43testng.run()44import org.testng.TestNG45import org.testng.TestListenerAdapter46import org.testng.xml.XmlSuite47def testng = new TestNG()48testng.setTestClasses([TestClass.class])49testng.run()50import org.testng.TestNG51import org.testng.TestListenerAdapter52import org.testng.xml.XmlSuite53def testng = new TestNG()54testng.setTestClasses([TestClass.class])55testng.run()56import org.testng.Test
run
Using AI Code Generation
1import org.testng.junit.JUnitTestRunner;2import org.testng.TestNG;3import org.testng.xml.XmlSuite;4import org.testng.xml.XmlClass;5import org.testng.xml.XmlTest;6import java.util.ArrayList;7import java.util.List;8def xmlSuite = new XmlSuite()9def xmlTest = new XmlTest(xmlSuite)10def xmlClass = new XmlClass()11def classes = new ArrayList<XmlClass>()12classes.add(xmlClass)13def suites = new ArrayList<XmlSuite>()14suites.add(xmlSuite)15def testng = new TestNG()16testng.setXmlSuites(suites)17def runner = new JUnitTestRunner()18runner.run(testng)19import org.testng.junit.JUnit4TestRunner;20import org.testng.TestNG;21import org.testng.xml.XmlSuite;22import org.testng.xml.XmlClass;23import org.testng.xml.XmlTest;24import java.util.ArrayList;25import java.util.List;26def xmlSuite = new XmlSuite()27def xmlTest = new XmlTest(xmlSuite)28def xmlClass = new XmlClass()29def classes = new ArrayList<XmlClass>()30classes.add(xmlClass)31def suites = new ArrayList<XmlSuite>()32suites.add(xmlSuite)33def testng = new TestNG()34testng.setXmlSuites(suites)35def runner = new JUnit4TestRunner()36runner.run(testng)37import org.testng.junit.JUnit4TestRunner;38import org.testng.TestNG;39import org.testng.xml.XmlSuite;40import org.testng.xml.XmlClass;41import org.testng.xml.XmlTest;42import java.util.ArrayList;43import java.util.List;44def xmlSuite = new XmlSuite()45def xmlTest = new XmlTest(xmlSuite)46def xmlClass = new XmlClass()47def classes = new ArrayList<XmlClass>()
run
Using AI Code Generation
1import org.testng.junit.JUnitTestRunner2import org.testng.TestNG3def testng = new TestNG()4testng.setTestClasses([Class.forName('com.test.TestClass')])5testng.setUseDefaultListeners(false)6testng.setVerbose(2)7testng.setPreserveOrder(true)8testng.setParallel('tests')9def testngRunner = new JUnitTestRunner()10testngRunner.run(testng)11import org.testng.TestNG12def testng = new TestNG()13testng.setTestClasses([Class.forName('com.test.TestClass')])14testng.setUseDefaultListeners(false)15testng.setVerbose(2)16testng.setPreserveOrder(true)17testng.setParallel('tests')18testng.run()19import org.testng.TestNG20def testng = new TestNG()21testng.setTestSuites(['testng.xml'])22testng.setUseDefaultListeners(false)23testng.setVerbose(2)24testng.setPreserveOrder(true)25testng.setParallel('tests')26testng.run()27import org.testng.TestNG28import org.testng.xml.XmlSuite29import org.testng.xml.XmlTest30def xmlSuite = new XmlSuite()31def xmlTest = new XmlTest(xmlSuite)32xmlTest.setXmlClasses([new XmlClass('com.test.TestClass')])33def testng = new TestNG()34testng.setXmlSuites([xmlSuite])35testng.setUseDefaultListeners(false)36testng.setVerbose(2)37testng.setPreserveOrder(true)38testng.setParallel('tests')39testng.run()40import org.testng.TestNG41import org.testng.xml.XmlSuite42import org.testng.xml.XmlTest43def xmlSuite = new XmlSuite()44def xmlTest = new XmlTest(xmlSuite)45xmlTest.setXmlClasses([new XmlClass('com.test
run
Using AI Code Generation
1import org.testng.junit.JUnitTestRunner2import org.testng.TestNG3import org.testng.TestListenerAdapter4import org.testng.TestNGException5def testRunner = new JUnitTestRunner()6def testng = new TestNG()7def listener = new TestListenerAdapter()8testng.setTestClasses([Class.forName('com.example.TestSuite')])9testng.setVerbose(2)10testng.addListener(listener)11testRunner.setTestNG(testng)12testRunner.run()13import org.testng.TestNG14import org.testng.TestListenerAdapter15def testng = new TestNG()16def listener = new TestListenerAdapter()17testng.setTestClasses([Class.forName('com.example.TestSuite')])18testng.setVerbose(2)19testng.addListener(listener)20testng.run()21import org.testng.TestNG22import org.testng.TestListenerAdapter23def testng = new TestNG()24def listener = new TestListenerAdapter()25testng.setTestClasses([Class.forName('com.example.TestSuite')])26testng.setVerbose(2)27testng.addListener(listener)28testng.run()
run
Using AI Code Generation
1import org.testng.junit.JUnitTestRunner2import org.testng.reporters.XMLReporter3import org.testng.reporters.EmailableReporter4import org.testng.reporters.TextReporter5import org.testng.reporters.FailedReporter6import org.testng.reporters.JUnitReportReporter7import org.testng.reporters.JUnitXMLReporter8import org.testng.reporters.SuiteHTMLReporter9import org.testng.reporters.SuiteHTMLReporter210import org.testng.reporters.XMLStringBuffer11def test = new JUnitTestRunner()12test.setTestName("com.example.SampleTest")13test.setVerbose(0)14test.setDebug(false)15test.setUseDefaultListeners(false)16test.setTestClasses(new String[] {"com.example.SampleTest"})17test.setGroups("test")18test.setExcludedGroups("exclude")19test.setListeners(new String[] {"org.testng.reporters.XMLReporter",20"org.testng.reporters.SuiteHTMLReporter2"})21test.setOutputDirectory("test-output")22test.setJunit(false)23test.setParallel("none")24test.setThreadCount(10)25test.setObjectFactory("org.testng.internal.DefaultObjectFactory")26test.setXmlPath("testng.xml")27test.setSuiteThreadPoolSize(10)28test.setXmlSuites(new String[] {"testng.xml"})29test.setXmlSuite(new XMLStringBuffer())30test.setPreserveOrder(false)31test.setSkipFailedInvocationCounts(false)32test.setVerbose(0)33test.setDebug(false)34test.setUseDefaultListeners(false)35test.setTestClasses(new String[] {"com.example.SampleTest"})36test.setGroups("test")37test.setExcludedGroups("exclude")38test.setListeners(new String[] {"org.testng.reporters.XMLReporter",39"org.testng.reporters.SuiteHTMLReporter2"})40test.setParallel("none")41test.setThreadCount(10)42test.setObjectFactory("org.testng.internal.DefaultObjectFactory")43test.setXmlPath("
run
Using AI Code Generation
1import org.testng.junit.JUnitTestRunner;2import org.testng.TestNG;3public class RunTestNG {4 public static void main(String[] args) {5 TestNG testNG = new TestNG();6 testNG.setTestSuites(Arrays.asList("testng.xml"));7 new JUnitTestRunner(testNG).run();8 }9}
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!!