Best Testng code snippet using org.testng.TestRunner.getFailedTests
Source:BaseTest.java  
...112  protected void setTests(Map<Long, Map> map, Map m) {113    map.put(getId(), m);114  }115116  public Map<String, List<ITestResult>> getFailedTests() {117    return getTests(m_failedTests);118  }119120  public Map<String, List<ITestResult>> getFailedButWithinSuccessPercentageTests() {121    return getTests(m_failedButWithinSuccessPercentageTests);122  }123124  public Map<String, List<ITestResult>> getPassedTests() {125    return getTests(m_passedTests);126  }127128  public Map<String, List<ITestResult>> getSkippedTests() {129    return getTests(m_skippedTests);130  }131132  public Map<String, List<ITestResult>> getFailedConfigs() {133    return getTests(m_failedConfigs);134  }135136  public Map<String, List<ITestResult>> getPassedConfigs() {137    return getTests(m_passedConfigs);138  }139140  public Map<String, List<ITestResult>> getSkippedConfigs() {141    return getTests(m_skippedConfigs);142  }143144  public void setSkippedTests(Map m) {145    setTests(m_skippedTests, m);146  }147148  public void setPassedTests(Map m) {149    setTests(m_passedTests, m);150  }151152  public void setFailedTests(Map m) {153    setTests(m_failedTests, m);154  }155156  public void setFailedButWithinSuccessPercentageTests(Map m) {157    setTests(m_failedButWithinSuccessPercentageTests, m);158  }159160  public void setSkippedConfigs(Map m) {161    setTests(m_skippedConfigs, m);162  }163164  public void setPassedConfigs(Map m) {165    setTests(m_passedConfigs, m);166  }167168  public void setFailedConfigs(Map m) {169    setTests(m_failedConfigs, m);170  }171172173  protected void run() {174    assert null != getTest() : "Test wasn't set, maybe @Configuration methodSetUp() was never called";175    setPassedTests(new HashMap());176    setFailedTests(new HashMap());177    setSkippedTests(new HashMap());178    setPassedConfigs(new HashMap());179    setFailedConfigs(new HashMap());180    setSkippedConfigs(new HashMap());181    setFailedButWithinSuccessPercentageTests(new HashMap());182183    m_suite.setVerbose(m_verbose != null ? m_verbose : 0);184    SuiteRunner suite = new SuiteRunner(m_configuration,185        m_suite, m_outputDirectory, m_testRunnerFactory, Systematiser.getComparator());186187    suite.run();188  }189190  protected void addMethodSelector(String className, int priority) {191    XmlMethodSelector methodSelector= new XmlMethodSelector();192    methodSelector.setName(className);193    methodSelector.setPriority(priority);194    getTest().getMethodSelectors().add(methodSelector);195  }196197  protected void addClasses(Class<?>... classes) {198    for (Class<?> clazz : classes) {199      addClass(clazz);200    }201  }202203  protected XmlClass addClass(Class<?> cls) {204    return addClass(cls.getName());205  }206207  protected XmlClass addClass(String className) {208    XmlClass result= new XmlClass(className);209    getTest().getXmlClasses().add(result);210211    return result;212  }213214  protected void setScript(String language, String expression) {215    XmlScript script = new XmlScript();216    script.setExpression(expression);217    script.setLanguage(language);218    getTest().setScript(script);219  }220221  protected void addPackage(String pkgName, String[] included, String[] excluded) {222    XmlPackage pkg= new XmlPackage();223    pkg.setName(pkgName);224    pkg.getInclude().addAll(Arrays.asList(included));225    pkg.getExclude().addAll(Arrays.asList(excluded));226    getTest().getSuite().getXmlPackages().add(pkg);227  }228229  private XmlClass findClass(String className) {230    for(XmlClass cl : getTest().getXmlClasses()) {231      if(cl.getName().equals(className)) {232        return cl;233      }234    }235236    XmlClass result= addClass(className);237238    return result;239  }240241  public void addIncludedMethod(String className, String m) {242    XmlClass xmlClass= findClass(className);243    xmlClass.getIncludedMethods().add(new XmlInclude(m));244    getTest().getXmlClasses().add(xmlClass);245  }246247  public void addExcludedMethod(String className, String m) {248    XmlClass xmlClass= findClass(className);249    xmlClass.getExcludedMethods().add(m);250    getTest().getXmlClasses().add(xmlClass);251  }252253  public void addIncludedGroup(String g) {254    getTest().addIncludedGroup(g);255  }256257  public void addExcludedGroup(String g) {258    getTest().addExcludedGroup(g);259  }260261  public void addMetaGroup(String mg, List<String> l) {262    getTest().getMetaGroups().put(mg, l);263  }264265  public void addMetaGroup(String mg, String n) {266    List<String> l= new ArrayList<>();267    l.add(n);268    addMetaGroup(mg, l);269  }270271  public void setParameter(String key, String value) {272    getTest().addParameter(key, value);273  }274275//  @Configuration(beforeTestMethod = true, groups = { "init", "initTest"})276  @BeforeMethod(groups= { "init", "initTest" })277  public void methodSetUp() {278    m_suite= new XmlSuite();279    m_suite.setName("Internal_suite");280    XmlTest xmlTest= new XmlTest(m_suite);281    xmlTest.setName("Internal_test_failures_are_expected");282    m_tests.put(getId(), xmlTest);283  }284285  private void addTest(Map<String, List<ITestResult>> tests, ITestResult t) {286    List<ITestResult> l= tests.get(t.getMethod().getMethodName());287    if(null == l) {288      l= new ArrayList<>();289      tests.put(t.getMethod().getMethodName(), l);290    }291    l.add(t);292  }293294  public void addPassedTest(ITestResult t) {295    addTest(getPassedTests(), t);296  }297298  public void addFailedTest(ITestResult t) {299    addTest(getFailedTests(), t);300  }301302  public void addFailedButWithinSuccessPercentageTest(ITestResult t) {303    addTest(getFailedButWithinSuccessPercentageTests(), t);304  }305306  public void addSkippedTest(ITestResult t) {307    addTest(getSkippedTests(), t);308  }309310  public void addPassedConfig(ITestResult t) {311    addTest(getPassedConfigs(), t);312  }313314  public void addFailedConfig(ITestResult t) {315    addTest(getFailedConfigs(), t);316  }317318  public void addSkippedConfig(ITestResult t) {319    addTest(getSkippedConfigs(), t);320  }321322  private void ppp(String s) {323    System.out.println("[BaseTest " + getId() + "] " + s);324  }325326  protected Long getId() {327    return 42L;328//    long result = Thread.currentThread().getId();329////    System.out.println("RETURNING ID " + result);330//    return result;331  }332333  public XmlSuite getSuite() {334    return m_suite;335  }336337  public void setSuite(XmlSuite suite) {338    m_suite = suite;339  }340341  /**342   * Used for instanceCount testing, when we need to look inside the343   * TestResult to count the various SUCCESS/FAIL/FAIL_BUT_OK344   */345  protected void verifyResults(Map<String, List<ITestResult>> tests,346                               int expected,347                               String message) {348    if(tests.size() > 0) {349      Set keys= tests.keySet();350      Object firstKey= keys.iterator().next();351      List<ITestResult> passedResult= tests.get(firstKey);352      int n= passedResult.size();353      assert n == expected : "Expected " + expected + " " + message + " but found " + n;354    }355    else {356      assert expected == 0 : "Expected " + expected + " " + message + " but found "357        + tests.size();358    }359  }360361  protected void dumpResults(String name, Map<String, List<ITestResult>> tests) {362    ppp("============= " + name);363    for(Map.Entry<String, List<ITestResult>> entry : tests.entrySet()) {364      ppp("TEST:" + entry.getKey());365      List<ITestResult> l= entry.getValue();366      for(ITestResult tr : l) {367        ppp("   " + tr);368      }369    }370  }371372  protected static void verifyInstanceNames(String title, Map<String, List<ITestResult>> actual,373      String[] expected)374  {375    List<String> actualNames = Lists.newArrayList();376    for (Map.Entry<String, List<ITestResult>> es : actual.entrySet()) {377      for (ITestResult tr : es.getValue()) {378        Object instance = tr.getInstance();379        actualNames.add(es.getKey() + "#" + (instance != null ? instance.toString() : ""));380      }381    }382    Assert.assertEqualsNoOrder(actualNames.toArray(), expected);383  }384385  protected void verifyPassedTests(String... expectedPassed) {386    verifyTests("Passed", expectedPassed, getPassedTests());387  }388389  protected void verifyFailedTests(String... expectedFailed) {390    verifyTests("Failed", expectedFailed, getFailedTests());391  }392393  protected void verifySkippedTests(String... expectedSkipped) {394    verifyTests("Skipped", expectedSkipped, getSkippedTests());395  }396397  private static class InternalTestRunnerFactory implements ITestRunnerFactory {398    private final BaseTest m_baseTest;399400    public InternalTestRunnerFactory(final BaseTest baseTest) {401      m_baseTest= baseTest;402    }403404    @Override405    public TestRunner newTestRunner(ISuite suite, XmlTest test,406        Collection<IInvokedMethodListener> listeners, List<IClassListener> classListeners) {407      TestRunner testRunner= new TestRunner(m_baseTest.getConfiguration(), suite, test, false,408          listeners, classListeners, Systematiser.getComparator());409410      testRunner.addListener(new TestHTMLReporter());411      testRunner.addListener(new JUnitXMLReporter());412      testRunner.addListener(new TestListener(m_baseTest));413      if (listeners != null) {414        for (IInvokedMethodListener l : listeners) {415          testRunner.addListener(l);416        }417      }418419      return testRunner;420    }421  }422423  protected void runTest(String cls, String[] passed, String[] failed, String[] skipped) {424    addClass(cls);425    run();426    verifyTests("Passed", passed, getPassedTests());427    verifyTests("Failed", failed, getFailedTests());428    verifyTests("Skipped", skipped, getSkippedTests());429  }430431} // BaseTest432433////////////////////////////434435class TestListener extends TestListenerAdapter {436  private static BaseTest m_test= null;437438  public TestListener(BaseTest t1) {439    m_test= t1;440  }441
...Source:TestRunnerTest.java  
...83    }84    @Test(expectedExceptions = Exception.class)85    public void testReportFailuresInvalid() throws Exception {86        new Expectations() {{87            tla.getFailedTests(); result = Collections.EMPTY_LIST;88            tla.getConfigurationFailures(); result = Collections.EMPTY_LIST;89        }};90        invoke(TestRunner.class, REPORT_FAILURES, tla);91    }92    @Test(expectedExceptions = Exception.class)93    public void testReportFailuresTestFailures() throws Exception {94        final String msg = "msg";95        new Expectations(tested) {{96            tla.getFailedTests(); result = new ArrayList<ITestResult>() {{ add(testResult); }};97            invoke(tested.getClass(), BUILD_ERROR_MESSAGE,98                    new Class<?>[]{List.class}, (List<ITestResult>) any); result = msg;99            tla.getConfigurationFailures(); result = Collections.EMPTY_LIST;100        }};101        invoke(TestRunner.class, REPORT_FAILURES, tla);102        new Verifications() {{103            builder.append("Failed Tests:\n");104            builder.append(msg);105        }};106    }107    @Test(expectedExceptions = Exception.class)108    public void testReportFailuresConfigFailures() throws Exception {109        final String msg = "msg";110        new Expectations(tested) {{111            tla.getFailedTests(); result = Collections.EMPTY_LIST;112            tla.getConfigurationFailures(); result = new ArrayList<ITestResult>() {{ add(testResult); }};113            invoke(tested.getClass(), BUILD_ERROR_MESSAGE,114                    new Class<?>[]{List.class}, (List<ITestResult>) any); result = msg;115        }};116        invoke(TestRunner.class, REPORT_FAILURES, tla);117        new Verifications() {{118            builder.append("Configuration Failures:\n");119            builder.append(msg);120        }};121    }122    @Test123    public void testBuildErrorMessageNoFailures() throws Exception {124        final String result = invoke(TestRunner.class, BUILD_ERROR_MESSAGE, Collections.EMPTY_LIST);125        assertThat(result).isEmpty();...Source:TestNGScreenshotListener.java  
...33	public void onStart(ITestContext context) {34		// TODO Auto-generated method stub35	}36	public void onFinish(ITestContext context) {37		Iterator<ITestResult> iterator = context.getFailedTests().getAllResults().iterator();38		39		while(iterator.hasNext()) {40			ITestResult failedTest = iterator.next();41			ITestNGMethod method = failedTest.getMethod();42			if(context.getFailedTests().getResults(method).size() > 1) {43				iterator.remove();44			}else if(context.getPassedTests().getResults(method).size() > 0) {45				iterator.remove();46			}47		}48	}49}...Source:ListenerTwo.java  
...18			19		for(ISuiteResult sr : suiteresult.values()) {20			ITestContext tc = sr.getTestContext();21			System.out.println("Passed tests for suite '" + suitename +"' is:" + tc.getPassedTests().getAllResults().size());22		    System.out.println("Failed tests for suite '" + suitename +"' is:" + tc.getFailedTests().getAllResults().size());23		    System.out.println("Skipped tests for suite '" + suitename +"' is:" + tc.getSkippedTests().getAllResults().size());	24		}25	}26		27}28	29	@BeforeSuite30	public void setUpBeforeSuite(ITestContext context) {31		TestRunner testrunner = (TestRunner)context;32		testrunner.setOutputDirectory("D:\\Users\\SKhuswah\\eclipse-workspace\\TestNGPractice\\test-output\\MyReport");33	}34}...getFailedTests
Using AI Code Generation
1import org.testng.TestRunner;2import org.testng.TestNG;3import org.testng.ITestResult;4import org.testng.ITestNGMethod;5import org.testng.ITestContext;6import java.util.List;7import java.util.ArrayList;8public class TestRunnerTest {9  public static void main(String[] args) {10    TestNG testNG = new TestNG();11    testNG.setTestClasses(new Class[] { TestRunnerTest.class });12    testNG.run();13  }14  public void test1() {15    System.out.println("test1");16  }17  public void test2() {18    System.out.println("test2");19    throw new RuntimeException("test2 failed");20  }21}22public class TestRunnerTest {23  public static void main(String[] args) {24    TestNG testNG = new TestNG();25    testNG.setTestClasses(new Class[] { TestRunnerTest.class });26    testNG.run();27  }28  public void test1() {29    System.out.println("test1");30  }31  public void test2() {32    System.out.println("test2");33    throw new RuntimeException("test2 failed");34  }35}36import org.testng.TestRunner;37import org.testng.TestNG;38import org.testng.ITestResult;39import org.testng.ITestNGMethod;40import org.testng.ITestContext;41import java.util.List;42import java.util.ArrayList;43public class TestRunnerTest {44  public static void main(String[] args) {45    TestNG testNG = new TestNG();46    testNG.setTestClasses(new Class[] { TestRunnerTest.class });47    testNG.run();48  }49  public void test1() {50    System.out.println("test1");51  }52  public void test2() {53    System.out.println("test2");54    throw new RuntimeException("test2 failed");55  }56}57import org.testng.TestRunner;58import org.testng.TestNG;59import org.testng.ITestResult;60import org.testng.ITestNGMethod;61import org.testng.ITestContext;62import java.util.List;63import java.util.ArrayList;64public class TestRunnerTest {65  public static void main(String[] args) {66    TestNG testNG = new TestNG();67    testNG.setTestClasses(new Class[] { TestRunnerTest.class });68    testNG.run();69  }getFailedTests
Using AI Code Generation
1import org.testng.TestNG2import org.testng.TestRunner3import org.testng.xml.XmlSuite4import org.testng.xml.XmlTest5import org.testng.xml.XmlClass6import java.util.ArrayList7import java.util.HashMap8import java.util.List9import java.util.Map10import java.util.Set11import java.util.HashSet12def testng = new TestNG()13testng.setTestSuites(Arrays.asList("testng-failed.xml"))14testng.run()15TestRunner testRunner = testng.getTestRunnerMap().get("TestNG")16List failedTests = testRunner.getFailedTests()17def report = new File("test-output/emailable-report.html")18def reportContent = report.getText("UTF-8")19def reportFailed = new File("test-output/emailable-report-failed.html")20def reportFailedContent = reportFailed.getText("UTF-8")21def reportRerun = new File("test-output/emailable-report-rerun.html")22def reportRerunContent = reportRerun.getText("UTF-8")23def mergedReport = new File("test-output/emailable-report-merged.html")24mergedReport.write(reportContent + reportFailedContent + reportRerunContent)25TestRunner testRunner = testng.getTestRunnerMap().get("TestNG")26List failedTests = testRunner.getFailedTests()27Set failedTestNames = new HashSet()28for (test in failedTests) {29    failedTestNames.add(test.getTestName())30}31Map failedTestMethods = new HashMap()32for (test in failedTests) {33    String testName = test.getTestName()34    List failedTestMethodsList = failedTestMethods.get(testName)35    if (failedTestMethodsList == nullTestNG 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!!
