Best Testng code snippet using org.testng.TestRunner.getVerbose
Source:Utils.java  
...162      163      writeFile(outputFile, sb, encoding);164    }165    catch (IOException e) {166      if (TestRunner.getVerbose() > 1) {167        e.printStackTrace();168      }169      else {170        log("[Utils]", 1, e.getMessage());171      }172    }173  }174  private static void writeFile(File outputFile, String sb, String encoding) {175    BufferedWriter fw = null;176    try {177      if (! outputFile.exists()) outputFile.createNewFile();178      OutputStreamWriter osw= null;179      if(null != encoding) {180        osw= new OutputStreamWriter(new FileOutputStream(outputFile, false), encoding);181      }182      else {183        osw= new OutputStreamWriter(new FileOutputStream(outputFile, false));184      }185      fw = new BufferedWriter(osw);186      fw.write(sb);187  188      Utils.log("", 3, "Creating " + outputFile.getAbsolutePath());189    }190    catch(IOException ex) {191      if (TestRunner.getVerbose() > 1) {192        System.err.println("ERROR WHILE WRITING TO " + outputFile);193        ex.printStackTrace();194      }195      else {196        log("[Utils]", 1, "Error while writing to " + outputFile + ": " + ex.getMessage());197      }198    }199    finally {200      try {201        if (fw != null) {202          fw.close();203        }204      }205      catch (IOException e) {206        ; // ignore207      }208    }209  }210  private static void ppp(String s) {211    Utils.log("Utils", 0, s);212  }213  /**214   * @param result215   */216  public static void dumpMap(Map<?, ?> result) {217    System.out.println("vvvvv");218    for (Iterator<?> it = result.keySet().iterator(); it.hasNext();) {219      Object key = it.next();220      Object value = result.get(key);221      System.out.println(key + " => " + value);222    }223    System.out.println("^^^^^");224  }225  /**226   * @param allMethods227   */228  public static void dumpMethods(List<ITestNGMethod> allMethods) {229    ppp("======== METHODS:");230    for (ITestNGMethod tm : allMethods) {231      ppp("  " + tm);232    }233  }234  /**235   * @return The list of dependent groups for this method, including the236   * class groups237   */238  public static String[] dependentGroupsForThisMethodForTest(Method m, IAnnotationFinder finder) {239    List<String> vResult = Lists.newArrayList();240    Class<?> cls = m.getDeclaringClass();241    // Collect groups on the class242    ITestAnnotation tc = AnnotationHelper.findTest(finder, cls);243    if (null != tc) {244      for (String group : tc.getDependsOnGroups()) {245        vResult.add(group);246      }247    }248    // Collect groups on the method249    ITestAnnotation tm = AnnotationHelper.findTest(finder, m);250    if (null != tm) {251      String[] groups = tm.getDependsOnGroups();252      //       ppp("Method:" + m + " #Groups:" + groups.length);253      for (String group : groups) {254        vResult.add(group);255      }256    }257    return (String[]) vResult.toArray(new String[vResult.size()]);258  }259  /**260   * @return The list of groups this method belongs to, including the261   * class groups262   */263  public static String[] groupsForThisMethodForTest(Method m, IAnnotationFinder finder) {264    List<String> vResult = Lists.newArrayList();265    Class<?> cls = m.getDeclaringClass();266    // Collect groups on the class267    ITestAnnotation tc = AnnotationHelper.findTest(finder, cls);268    if (null != tc) {269      for (String group : tc.getGroups()) {270        vResult.add(group);271      }272    }273    // Collect groups on the method274    ITestAnnotation tm = AnnotationHelper.findTest(finder, m);275    if (null != tm) {276      String[] groups = tm.getGroups();277      //       ppp("Method:" + m + " #Groups:" + groups.length);278      for (String group : groups) {279        vResult.add(group);280      }281    }282    return (String[]) vResult.toArray(new String[vResult.size()]);283  }284  /**285   * @return The list of groups this method belongs to, including the286   * class groups287   */288  public static String[] groupsForThisMethodForConfiguration(Method m, IAnnotationFinder finder) {289    String[] result = {};290    // Collect groups on the method291    ITestAnnotation tm = AnnotationHelper.findTest(finder, m);292    if (null != tm) {293      result = tm.getGroups();294    }295    return result;296  }297  /**298   * @return The list of groups this method depends on, including the299   * class groups300   */301  public static String[] dependentGroupsForThisMethodForConfiguration(Method m,302                                                                      IAnnotationFinder finder) {303    String[] result = {};304    // Collect groups on the method305    IConfigurationAnnotation tm = AnnotationHelper.findConfiguration(finder, m);306    if (null != tm) {307      result = tm.getDependsOnGroups();308    }309    return result;310  }311  312  public static void log(String msg) {313    log("Utils", 2, msg);314  }315  /**316   * Logs the the message to System.out if level is greater than317   * or equal to TestRunner.getVerbose(). The message is logged as:318   * <pre>319   *     "[cls] msg"320   * </pre>321   *322   * @param cls the class name to prefix the log message.323   * @param level the logging level of the message.324   * @param msg the message to log to System.out.325   */326  public static void log(String cls, int level, String msg) {327    // Why this coupling on a static member of TestRunner.getVerbose()?328    if (TestRunner.getVerbose() >= level) {329      if (cls.length() > 0) {330        System.out.println("[" + cls + "] " + msg);331      }332      else {333        System.out.println(msg);334      }335    }336  }337  338  public static void error(String errorMessage) {339    System.err.println("[Error] " + errorMessage);340  }341  /**342   * @return The number of methods invoked, taking into account the number343   * of instances.344   */345//  public static int calculateInvokedMethodCount(IResultMap map) {346//    return calculateInvokedMethodCount(347//        (ITestNGMethod[]) map.getAllMethods().toArray(new ITestNGMethod[map.size()]));348//  }349  350  public static int calculateInvokedMethodCount(ITestNGMethod[] methods) {351    return methods.length;352//    int result = 0;353//354//    for (ITestNGMethod method : methods) {355//      int instanceCount = method.getInvocationCount();356//      result += instanceCount;357//    }358//359//    return result;360  }361//  public static int calculateInvokedMethodCount(Map<ITestNGMethod, ITestResult> methods) {362//    return calculateInvokedMethodCount(methods.keySet().toArray(new ITestNGMethod[methods.values()363//                                                                .size()]));364//  }365  /**366   * Tokenize the string using the separator.367   */368  public static String[] split(String string, String sep) {369    if ((string == null) || (string.length() == 0)) {370      return new String[0];371    }372    // TODO How different is this from: 373    // return string.split(sep);374    375    int start = 0;376    int idx = string.indexOf(sep, start);377    int len = sep.length();378    List<String> strings = Lists.newArrayList();379    while (idx != -1) {380      strings.add(string.substring(start, idx).trim());381      start = idx + len;382      idx = string.indexOf(sep, start);383    }384    strings.add(string.substring(start).trim());385    return strings.toArray(new String[strings.size()]);386  }387  public static void initLogger(Logger logger, String outputLogPath) {388    try {389      logger.setUseParentHandlers(false);390      FileHandler fh = new FileHandler(outputLogPath);391      fh.setFormatter(new TextFormatter());392      fh.setLevel(Level.INFO);393      logger.addHandler(fh);394    }395    catch (SecurityException se) {396      se.printStackTrace();397    }398    catch (IOException ioe) {399      ioe.printStackTrace();400    }401  }402  public static void logInvocation(String reason, Method thisMethod, Object[] parameters) {403    String clsName = thisMethod.getDeclaringClass().getName();404    int n = clsName.lastIndexOf(".");405    if (n >= 0) {406      clsName = clsName.substring(n + 1);407    }408    String methodName = clsName + '.' + thisMethod.getName();409    if (TestRunner.getVerbose() >= 2) {410      StringBuffer paramString = new StringBuffer();411      if (parameters != null) {412        for (Object p : parameters) {413          paramString.append(p.toString()).append(' ');414        }415      }416      log("", 2, "Invoking " + reason + methodName + '(' + paramString + ')');417    }418  }419  public static void writeResourceToFile(File file, String resourceName, Class<?> clasz) throws IOException {420    InputStream inputStream = clasz.getResourceAsStream("/" + resourceName);421    if (inputStream == null) {422      System.err.println("Couldn't find resource on the class path: " + resourceName);423//      throw new IllegalArgumentException("Resource does not exist: " + resourceName);424    }425    426    else {427      428      try {429        FileOutputStream outputStream = new FileOutputStream(file);430        try {431          int nread;432          byte[] buffer = new byte[4096];433          while (0 < (nread = inputStream.read(buffer))) {434            outputStream.write(buffer, 0, nread);435          }436        } finally {437          outputStream.close();438        }439      } finally {440        inputStream.close();441      }442    }443  }444  public static boolean isStringEmpty(String s) {445    return s == null || "".equals(s);446  }447  public static String[] stackTrace(Throwable t, boolean tohtml) {448    StringWriter sw = new StringWriter();449    PrintWriter pw = new PrintWriter(sw);450    t.printStackTrace(pw);451    pw.flush();452    453    String fullStackTrace = sw.getBuffer().toString();454    String shortStackTrace;455    456    if (Boolean.getBoolean(TestNGCommandLineArgs.SHOW_TESTNG_STACK_FRAMES)457        || TestRunner.getVerbose() == -1) {458      shortStackTrace = fullStackTrace;459    }460    else {461      shortStackTrace = filterTrace(sw.getBuffer().toString());462    }463    464    if (tohtml) {465      shortStackTrace = shortStackTrace.replaceAll("<", "<").replaceAll(">", ">");466      fullStackTrace = fullStackTrace.replaceAll("<", "<").replaceAll(">", ">");467    }468    469    return new String[] {470        shortStackTrace, fullStackTrace471    };...Source:SuiteRunner.java  
...177      invokeListeners(false /* start */);178      //179      // Display the final statistics180      //181      if (m_suite.getVerbose() > 0) {182        int total = m_textReporter.getAllTestMethods().length;183        List<ITestResult> skipped = m_textReporter.getSkippedTests();184        List<ITestResult> failed = m_textReporter.getFailedTests();185        int confFailures= m_textReporter.getConfigurationFailures().size();186        int confSkips= m_textReporter.getConfigurationSkips().size();187        StringBuffer bufLog= new StringBuffer(getName());188        bufLog.append("\nTotal tests run: ")189            .append(total)190            .append(", Failures: ").append(failed.size())191            .append(", Skips: ").append(skipped.size());;192        if(confFailures > 0 || confSkips > 0) {193          bufLog.append("\nConfiguration Failures: ").append(confFailures)194              .append(", Skips: ").append(confSkips)195              ;196        }197            198         System.out.println("\n===============================================\n"199                           + bufLog.toString()200                           + "\n===============================================\n");201      }202    }203  }204  private void privateRun() {205    206    // Map for unicity, Linked for guaranteed order207    Map<Method, ITestNGMethod> beforeSuiteMethods= new LinkedHashMap<Method, ITestNGMethod>();208    Map<Method, ITestNGMethod> afterSuiteMethods = new LinkedHashMap<Method, ITestNGMethod>();209    IInvoker invoker = null;210    211    //212    // First, we create all the test runners so we can discover all the ITestClasses213    //214    for (XmlTest test : m_suite.getTests()) {215      TestRunner tr = m_runnerFactory.newTestRunner(this, test, m_invokedMethodListeners);216      217      //218      // Install the method interceptor, if any was passed219      //220      if (m_methodInterceptor != null) {221        tr.setMethodInterceptor(m_methodInterceptor);222      }223      // Reuse the same text reporter so we can accumulate all the results224      // (this is used to display the final suite report at the end)225      tr.addListener(m_textReporter);226      m_testRunners.add(tr);227      // TODO: Code smell.  Invoker should belong to SuiteRunner, not TestRunner228      // -- cbeust229      invoker = tr.getInvoker();230      231      for (ITestNGMethod m : tr.getBeforeSuiteMethods()) {232        beforeSuiteMethods.put(m.getMethod(), m);233      }234      for (ITestNGMethod m : tr.getAfterSuiteMethods()) {235        afterSuiteMethods.put(m.getMethod(), m);236      }237    }238    //239    // Invoke beforeSuite methods (the invoker can be null240    // if the suite we are currently running only contains241    // a <file-suite> tag and no real tests)242    //243    if (invoker != null) {244      if(beforeSuiteMethods.values().size() > 0) {245        invoker.invokeConfigurations(null,246            beforeSuiteMethods.values().toArray(new ITestNGMethod[beforeSuiteMethods.size()]),247            m_suite, m_suite.getParameters(), null, /* no parameter values */248            null /* instance */249        );250      }251      Utils.log("SuiteRunner", 3, "Created " + m_testRunners.size() + " TestRunners");252  253      //254      // Run all the test runners255      //256      boolean testsInParallel = XmlSuite.PARALLEL_TESTS.equals(m_suite.getParallel());257      if (!testsInParallel) {258        runSequentially();259      } 260      else {261        runConcurrently();262      }263      264//      SuitePlan sp = new SuitePlan();265//      for (TestRunner tr : m_testRunners) {266//        sp.addTestPlan(tr.getTestPlan());267//      }268      269//      sp.dump();270  271      //272      // Invoke afterSuite methods273      //274      if (afterSuiteMethods.values().size() > 0) {275        invoker.invokeConfigurations(null,276              afterSuiteMethods.values().toArray(new ITestNGMethod[afterSuiteMethods.size()]),277              m_suite, m_suite.getAllParameters(), null, /* no parameter values */278              null /* instance */);279      }280    }281  }282  private void runSequentially() {283    for (TestRunner tr : m_testRunners) {284      runTest(tr);285    }286  }287  private void runTest(TestRunner tr) {288    tr.run();289    ISuiteResult sr = new SuiteResult(m_suite, tr);290    m_suiteResults.put(tr.getName(), sr);291  }292  private void runConcurrently() {293    List<Runnable> tasks= Lists.newArrayList(m_testRunners.size());294    for(TestRunner tr: m_testRunners) {295      tasks.add(new SuiteWorker(tr));296    }297    298    ThreadUtil.execute(tasks, m_suite.getThreadCount(), m_suite.getTimeOut(m_suite.getTests().size() * 1000L), false);299  }300  private class SuiteWorker implements Runnable {301      private TestRunner m_testRunner;302      public SuiteWorker(TestRunner tr) {303        m_testRunner = tr;304      }305      public void run() {306        Utils.log("[SuiteWorker]", 4, "Running XML Test '" 307                  +  m_testRunner.getTest().getName() + "' in Parallel");308        runTest(m_testRunner);309      }310  }311  /**312   * Registers ISuiteListeners interested in reporting the result of the current313   * suite.314   *315   * @param reporter316   */317  public void addListener(ISuiteListener reporter) {318    m_listeners.add(reporter);319  }320  public String getOutputDirectory() {321    return m_outputDir + File.separatorChar + getName();322  }323  public Map<String, ISuiteResult> getResults() {324    return m_suiteResults;325  }326  327  /**328   * FIXME: should be removed?329   *330   * @see org.testng.ISuite#getParameter(java.lang.String)331   */332  public String getParameter(String parameterName) {333    return m_suite.getParameter(parameterName);334  }335  /**336   * @see org.testng.ISuite#getMethodsByGroups()337   */338  public Map<String, Collection<ITestNGMethod>> getMethodsByGroups() {339    Map<String, Collection<ITestNGMethod>> result = Maps.newHashMap();340    for (TestRunner tr : m_testRunners) {341      ITestNGMethod[] methods = tr.getAllTestMethods();342      for (ITestNGMethod m : methods) {343        String[] groups = m.getGroups();344        for (String groupName : groups) {345          Collection<ITestNGMethod> testMethods = result.get(groupName);346          if (null == testMethods) {347            testMethods = Lists.newArrayList();348            result.put(groupName, testMethods);349          }350          testMethods.add(m);351        }352      }353    }354    return result;355  }356  /**357   * @see org.testng.ISuite#getInvokedMethods()358   */359  public Collection<ITestNGMethod> getInvokedMethods() {360    return getIncludedOrExcludedMethods(true /* included */);361  }362  /**363   * @see org.testng.ISuite#getExcludedMethods()364   */365  public Collection<ITestNGMethod> getExcludedMethods() {366    return getIncludedOrExcludedMethods(false/* included */);367  }368  369  private Collection<ITestNGMethod> getIncludedOrExcludedMethods(boolean included) {370    List<ITestNGMethod> result= Lists.newArrayList();371    for (TestRunner tr : m_testRunners) {372      Collection<ITestNGMethod> methods = included ? tr.getInvokedMethods() : tr.getExcludedMethods();373      for (ITestNGMethod m : methods) {374        result.add(m);375      }376    }377    return result;378  }379  public IObjectFactory getObjectFactory() {380    return m_objectFactory;381  }382  /**383   * Returns the annotation finder for the given annotation type.384   * @param pAnnotationType the annotation type 385   * @return the annotation finder for the given annotation type. 386   */387  public IAnnotationFinder getAnnotationFinder(String pAnnotationType) 388  {389    AnnotationTypeEnum annotationType = AnnotationTypeEnum.valueOf(pAnnotationType);390    if (AnnotationTypeEnum.JDK != annotationType) {391      throw new TestNGException("Javadoc annotations are no longer supported. Either" +392      		" update your tests to JDK annotations or use TestNG 5.11.");393    }394    return m_jdkAnnotationFinder;395  }396  public static void ppp(String s) {397    System.out.println("[SuiteRunner] " + s);398  }399  /**400   * The default implementation of {@link ITestRunnerFactory}.401   */402  public static class DefaultTestRunnerFactory implements ITestRunnerFactory {403    private ITestListener[] m_failureGenerators;404    private boolean m_useDefaultListeners;405    private boolean m_skipFailedInvocationCounts;406    407    public DefaultTestRunnerFactory(ITestListener[] failureListeners,408        boolean useDefaultListeners,409        boolean skipFailedInvocationCounts)410    {411      m_failureGenerators = failureListeners;412      m_useDefaultListeners = useDefaultListeners;413      m_skipFailedInvocationCounts = skipFailedInvocationCounts;414    }415    /**416     * @see ITestRunnerFactory#newTestRunner(org.testng.ISuite, org.testng.xml.XmlTest)417     */418    public TestRunner newTestRunner(ISuite suite, XmlTest test,419        List<IInvokedMethodListener> listeners) {420      boolean skip = m_skipFailedInvocationCounts;421      if (! skip) {422        skip = test.skipFailedInvocationCounts();423      }424      TestRunner testRunner = 425        new TestRunner(suite,426                        test,427                        suite.getOutputDirectory(),428                        suite.getAnnotationFinder(test.getAnnotations()),429                        skip,430                        listeners);431      432      if (m_useDefaultListeners) {433        testRunner.addListener(new TestHTMLReporter());434        testRunner.addListener(new JUnitXMLReporter());435        436        //TODO: Moved these here because maven2 has output reporters running437        //already, the output from these causes directories to be created with438        //files. This is not the desired behaviour of running tests in maven2. 439        //Don't know what to do about this though, are people relying on these440        //to be added even with defaultListeners set to false?441        testRunner.addListener(new TextReporter(testRunner.getName(), TestRunner.getVerbose()));442      }443      444      for (ITestListener itl : m_failureGenerators) {445        testRunner.addListener(itl);446      }447      448      return testRunner;449    }450  }451  public static class ProxyTestRunnerFactory implements ITestRunnerFactory {452    private ITestListener[] m_failureGenerators;453    private ITestRunnerFactory m_target;454    public ProxyTestRunnerFactory(ITestListener[] failureListeners, ITestRunnerFactory target) {455      m_failureGenerators = failureListeners;456      m_target= target;457    }458    /**459     * @see ITestRunnerFactory#newTestRunner(org.testng.ISuite, org.testng.xml.XmlTest)460     */461    public TestRunner newTestRunner(ISuite suite, XmlTest test,462        List<IInvokedMethodListener> listeners) {463      TestRunner testRunner= m_target.newTestRunner(suite, test, listeners);464      testRunner.addListener(new TextReporter(testRunner.getName(), TestRunner.getVerbose()));465      for (ITestListener itl : m_failureGenerators) {466        testRunner.addListener(itl);467      }468      return testRunner;469    }470  }471  public void setHost(String host) {472    m_host = host;473  }474  475  public String getHost() {476    return m_host;477  }478  private SuiteRunState m_suiteState= new SuiteRunState();...Source:Reporter.java  
...37public static void log(String s) {38  log(s, getCurrentTestResult());39}40public static void Mlog(String s, int level, boolean logToStandardOut) {41  if (TestRunner.getVerbose() >= level) {42    log(s, getCurrentTestResult());43    if (logToStandardOut) {44      System.out.println(s);45    }46  }47}48public static void log(String s, boolean logToStandardOut) {49  log(s, getCurrentTestResult());50  if (logToStandardOut) {51    System.out.println(s);52  }53}54public static void log(String s, int level) {55  if (TestRunner.getVerbose() >= level) {56    log(s, getCurrentTestResult());57  }58}59  public static ITestResult getCurrentTestResult() {60    return m_currentTestResult.get();61  }62  public static synchronized List<String> getOutput(ITestResult tr) {63    List<String> result = Lists.newArrayList();64    List<Integer> lines = m_methodOutputMap.get(tr);65    if (lines != null) {66      for (Integer n : lines) {67        result.add(getOutput().get(n));68      }69    }...getVerbose
Using AI Code Generation
1import org.testng.TestNG;2import org.testng.TestRunner;3public class TestRunnerTest {4    public static void main(String[] args) {5        TestNG testNG = new TestNG();6        testNG.setTestClasses(new Class[] { TestRunnerTest.class });7        testNG.run();8    }9    public void testGetVerbose() {10        TestRunner testRunner = new TestRunner();11        System.out.println(testRunner.getVerbose());12    }13}getVerbose
Using AI Code Generation
1import org.testng.TestRunner2import org.testng.TestNG3import org.testng.xml.XmlSuite4import org.testng.xml.XmlTest5import org.testng.xml.XmlClass6import org.testng.xml.XmlGroups7import org.testng.xml.XmlInclude8import org.testng.xml.XmlPackage9import org.testng.xml.XmlMethodSelector10import org.testng.xml.XmlMethodSelectors11import org.testng.xml.XmlMethodSelectorType12import org.testng.xml.XmlMethodSelectorMethodType13import org.testng.xml.XmlMethodSelectorGroupType14import org.testng.xml.XmlMethodSelectorClassType15import org.testng.xml.XmlFactory16import org.testng.xml.XmlParameter17def suite = new XmlSuite()18def test = new XmlTest(suite)19def testClass = new XmlClass("Test")20def testMethod = new XmlInclude("test")21testClass.getIncludedMethods().add(testMethod)22test.getClasses().add(testClass)23def testng = new TestNG()24testng.setXmlSuites([suite])25testng.run()26def testRunner = new TestRunner(testng)27def testResult = testRunner.getVerbose()28Method test() should be public29	at org.testng.internal.MethodHelper.getMethods(MethodHelper.java:113)30	at org.testng.internal.MethodHelper.findMethods(MethodHelper.java:55)31	at org.testng.internal.ClassHelper.findTestMethods(ClassHelper.java:174)32	at org.testng.internal.ClassHelper.getTestMethods(ClassHelper.java:133)33	at org.testng.internal.ClassHelper.getTestMethods(ClassHelper.java:125)34	at org.testng.internal.ClassImpl.getTestMethods(ClassImpl.java:239)35	at org.testng.internal.ClassImpl.getTestMethods(ClassImpl.java:236)36	at org.testng.internal.TestNGClassFinder.findTestClasses(TestNGClassFinder.java:93)37	at org.testng.TestNG.setTestClasses(TestNG.java:1003)38	at org.testng.TestNG.setXmlSuites(TestNG.java:983)39	at org.testng.TestNG.run(TestNG.java:1007)40	at org.testng.TestNG.run(TestNG.java:973)41	at org.testng.TestNG.run(TestNG.java:964)getVerbose
Using AI Code Generation
1import org.testng.TestNG2import org.testng.TestRunner3class MyTest {4    def "test verbose level"() {5        def testng = new TestNG()6        testng.setTestClasses([MyTest.class])7        testng.setVerbose(2)8        testng.run()9        def verboseLevel = TestRunner.getVerbose()10    }11}12Example 2: [code]getVerbose()[/code] method of [code]org.testng.TestRunner[/code] class to get the verbose level of the test run13package com.example;14import org.testng.TestNG;15import org.testng.TestRunner;16public class MyTest {17    public void testVerboseLevel() {18        TestNG testng = new TestNG();19        testng.setTestClasses(new Class[]{MyTest.class});20        testng.setVerbose(2);21        testng.run();22        int verboseLevel = TestRunner.getVerbose();23        assert verboseLevel == 2;24    }25}26Example 3: [code]getVerbose()[/code] method of [code]org.testng.TestRunner[/code] class to get the verbose level of the test run27import org.testng.TestNG28import org.testng.TestRunner29class MyTest {30    fun testVerboseLevel() {31        val testng = TestNG()32        testng.setTestClasses(arrayOf(MyTest::class.java))33        testng.setVerbose(2)34        testng.run()35        val verboseLevel = TestRunner.getVerbose()36    }37}getVerbose
Using AI Code Generation
1import org.testng.TestRunner2import org.testng.xml.XmlSuite3import org.testng.xml.XmlTest4import org.testng.xml.XmlClass5import org.testng.xml.XmlMethodSelector6import org.testng.xml.XmlMethodSelectors7import org.testng.xml.XmlGroups8import org.testng.xml.XmlRun9import org.testng.xml.XmlInclude10import org.testng.xml.XmlPackages11import org.testng.xml.XmlParameter12import org.testng.xml.XmlReporterConfig13import org.testng.xml.XmlSuite.ParallelMode14import org.testng.xml.XmlTest.Parameter15import org.testng.xml.XmlTest.State16import org.testng.xml.XmlClass.TestClassType17import java.util.ArrayList18import java.util.List19import java.util.Map20import java.util.HashMap21import java.util.Properties22import java.util.Set23import java.util.HashSet24import java.util.Collections25import java.util.Arrays26import java.util.Comparator27import java.util.regex.Pattern28import java.util.regex.Matcher29import java.io.File30import java.io.IOException31import java.io.InputStream32import java.io.FileInputStream33import java.io.FileOutputStream34import java.io.OutputStream35import java.io.OutputStreamWriter36import java.io.BufferedWriter37import java.io.BufferedReader38import java.io.FileReader39import java.io.FileWriter40import java.io.StringWriter41import java.io.PrintWriter42import java.io.Reader43import java.io.Writer44import java.io.StringReader45import java.io.InputStreamReader46import java.io.ByteArrayOutputStream47import java.io.ByteArrayInputStream48import java.io.DataOutputStream49import java.io.DataInputStream50import java.io.ObjectOutputStream51import java.io.ObjectInputStream52import java.io.ObjectStreamClass53import java.io.Serializable54import java.io.Externalizable55import java.io.ObjectStreamException56import java.io.ObjectStreamField57import java.io.SerializablePermission58import java.io.NotSerializableException59import java.io.InvalidClassException60import java.io.NotActiveException61import java.io.StreamCorruptedException62import java.io.OptionalDataException63import java.io.InvalidObjectExceptionTestNG 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!!
