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 intercept(List<IMethodInstance> methods, ITestContext context)32 List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context); 33 34 } 35