Best Testng code snippet using org.testng.SuiteRunner.getParameter
Source:SuiteRunner.java  
...252    if (invoker != null) {253      if(beforeSuiteMethods.values().size() > 0) {254        invoker.invokeConfigurations(null,255            beforeSuiteMethods.values().toArray(new ITestNGMethod[beforeSuiteMethods.size()]),256            m_suite, m_suite.getParameters(), null, /* no parameter values */257            null /* instance */258        );259      }260      Utils.log("SuiteRunner", 3, "Created " + m_testRunners.size() + " TestRunners");261      //262      // Run all the test runners263      //264      boolean testsInParallel = XmlSuite.ParallelMode.TESTS.equals(m_suite.getParallel());265      if (!testsInParallel) {266        runSequentially();267      }268      else {269        runInParallelTestMode();270      }271//      SuitePlan sp = new SuitePlan();272//      for (TestRunner tr : m_testRunners) {273//        sp.addTestPlan(tr.getTestPlan());274//      }275//      sp.dump();276      //277      // Invoke afterSuite methods278      //279      if (afterSuiteMethods.values().size() > 0) {280        invoker.invokeConfigurations(null,281              afterSuiteMethods.values().toArray(new ITestNGMethod[afterSuiteMethods.size()]),282              m_suite, m_suite.getAllParameters(), null, /* no parameter values */283              null /* instance */);284      }285    }286  }287  private List<IReporter> m_reporters = Lists.newArrayList();288  private void addReporter(IReporter listener) {289    m_reporters.add(listener);290  }291  void addConfigurationListener(IConfigurationListener listener) {292    m_configuration.addConfigurationListener(listener);293  }294  public List<IReporter> getReporters() {295    return m_reporters;296  }297  private void runSequentially() {298    for (TestRunner tr : m_testRunners) {299      runTest(tr);300    }301  }302  private void runTest(TestRunner tr) {303    tr.run();304    ISuiteResult sr = new SuiteResult(m_suite, tr);305    m_suiteResults.put(tr.getName(), sr);306  }307  /**308   * Implement <suite parallel="tests">.309   * Since this kind of parallelism happens at the suite level, we need a special code path310   * to execute it.  All the other parallelism strategies are implemented at the test level311   * in TestRunner#createParallelWorkers (but since this method deals with just one <test>312   * tag, it can't implement <suite parallel="tests">, which is why we're doing it here).313   */314  private void runInParallelTestMode() {315    List<Runnable> tasks= Lists.newArrayList(m_testRunners.size());316    for(TestRunner tr: m_testRunners) {317      tasks.add(new SuiteWorker(tr));318    }319    ThreadUtil.execute(tasks, m_suite.getThreadCount(),320        m_suite.getTimeOut(XmlTest.DEFAULT_TIMEOUT_MS), false);321  }322  private class SuiteWorker implements Runnable {323      private TestRunner m_testRunner;324      public SuiteWorker(TestRunner tr) {325        m_testRunner = tr;326      }327      @Override328      public void run() {329        Utils.log("[SuiteWorker]", 4, "Running XML Test '"330                  +  m_testRunner.getTest().getName() + "' in Parallel");331        runTest(m_testRunner);332      }333  }334  /**335   * Registers ISuiteListeners interested in reporting the result of the current336   * suite.337   *338   * @param reporter339   */340  protected void addListener(ISuiteListener reporter) {341    m_listeners.put(reporter.getClass(), reporter);342  }343  @Override344  public void addListener(ITestNGListener listener) {345    if (listener instanceof IInvokedMethodListener) {346      IInvokedMethodListener invokedMethodListener = (IInvokedMethodListener) listener;347      m_invokedMethodListeners.put(invokedMethodListener.getClass(), invokedMethodListener);348    }349    if (listener instanceof ISuiteListener) {350      addListener((ISuiteListener) listener);351    }352    if (listener instanceof IReporter) {353      addReporter((IReporter) listener);354    }355    if (listener instanceof IConfigurationListener) {356      addConfigurationListener((IConfigurationListener) listener);357    }358  }359  @Override360  public String getOutputDirectory() {361    return m_outputDir + File.separatorChar + getName();362  }363  @Override364  public Map<String, ISuiteResult> getResults() {365    return m_suiteResults;366  }367  /**368   * FIXME: should be removed?369   *370   * @see org.testng.ISuite#getParameter(java.lang.String)371   */372  @Override373  public String getParameter(String parameterName) {374    return m_suite.getParameter(parameterName);375  }376  /**377   * @see org.testng.ISuite#getMethodsByGroups()378   */379  @Override380  public Map<String, Collection<ITestNGMethod>> getMethodsByGroups() {381    Map<String, Collection<ITestNGMethod>> result = Maps.newHashMap();382    for (TestRunner tr : m_testRunners) {383      ITestNGMethod[] methods = tr.getAllTestMethods();384      for (ITestNGMethod m : methods) {385        String[] groups = m.getGroups();386        for (String groupName : groups) {387          Collection<ITestNGMethod> testMethods = result.get(groupName);388          if (null == testMethods) {...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!!
