1package org.testng;
2
3import 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 */
30public interface IMethodInterceptor extends ITestNGListener {
31
32  List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context);
33
34}
35