Home | History | Annotate | Download | only in testng
      1 package org.testng;
      2 
      3 import java.util.List;
      4 
      5 /**
      6  * This class is used to alter the list of test methods that TestNG is about to run.
      7  *
      8  * <p>
      9  *
     10  * An instance of this class will be invoked right before TestNG starts invoking test methods.
     11  * Only methods that have no dependents and that don't depend on any other test methods will
     12  * be passed in parameter.  Implementers of this interface need to return a list of {@link IMethodInstance}
     13  * that represents the list of test methods they want run.  TestNG will run these methods in the
     14  * same order found in the returned value.
     15  *
     16  * <p>
     17  *
     18  * Typically, the returned list will be just the methods passed in parameter but sorted
     19  * differently, but it can actually have any size (it can be empty, it can be of the
     20  * same size as the original list or it can contain more methods).
     21  *
     22  * <p>
     23  *
     24  * The {@link ITestContext} is passed in the <tt>intercept</tt> method so that implementers can set user values
     25  * (using {@link ITestContext#setAttribute(String, Object)}), which they can then look up
     26  * later while generating the reports.
     27  *
     28  * @author cbeust
     29  */
     30 public interface IMethodInterceptor extends ITestNGListener {
     31 
     32   List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context);
     33 
     34 }
     35