package org.testng.annotations; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.TYPE; import java.lang.annotation.Retention; import java.lang.annotation.Target; /** * Mark a class or a method as part of the test. * * @author Cedric Beust, Apr 26, 2004 */ @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @Target({METHOD, TYPE, CONSTRUCTOR}) public @interface Test { /** * The list of groups this class/method belongs to. */ public String[] groups() default {}; /** * Whether methods on this class/method are enabled. */ public boolean enabled() default true; /** * The list of variables used to fill the parameters of this method. * These variables must be defined in the property file. * * @deprecated Use @Parameters */ @Deprecated public String[] parameters() default {}; /** * The list of groups this method depends on. Every method * member of one of these groups is guaranteed to have been * invoked before this method. Furthermore, if any of these * methods was not a SUCCESS, this test method will not be * run and will be flagged as a SKIP. */ public String[] dependsOnGroups() default {}; /** * The list of methods this method depends on. There is no guarantee * on the order on which the methods depended upon will be run, but you * are guaranteed that all these methods will be run before the test method * that contains this annotation is run. Furthermore, if any of these * methods was not a SUCCESS, this test method will not be * run and will be flagged as a SKIP. * * If some of these methods have been overloaded, all the overloaded * versions will be run. */ public String[] dependsOnMethods() default {}; /** * The maximum number of milliseconds this test should take. * If it hasn't returned after this time, it will be marked as a FAIL. */ public long timeOut() default 0; /** * The maximum number of milliseconds that the total number of invocations on this test * method should take. This annotation will be ignored if the attribute invocationCount * is not specified on this method. * If it hasn't returned after this time, it will be marked as a FAIL. */ public long invocationTimeOut() default 0; /** * The number of times this method should be invoked. */ public int invocationCount() default 1; /** * The size of the thread pool for this method. The method will be invoked * from multiple threads as specified by invocationCount. * Note: this attribute is ignored if invocationCount is not specified */ public int threadPoolSize() default 0; /** * The percentage of success expected from this method. */ public int successPercentage() default 100; /** * The name of the data provider for this test method. * @see org.testng.annotations.DataProvider */ public String dataProvider() default ""; /** * The class where to look for the data provider. If not * specified, the dataprovider will be looked on the class * of the current test method or one of its super classes. * If this attribute is specified, the data provider method * needs to be static on the specified class. */ public Class<?> dataProviderClass() default Object.class; /** * If set to true, this test method will always be run even if it depends * on a method that failed. This attribute will be ignored if this test * doesn't depend on any method or group. */ public boolean alwaysRun() default false; /** * The description for this method. The string used will appear in the * HTML report and also on standard output if verbose >= 2. */ public String description() default ""; /** * The list of exceptions that a test method is expected to throw. If no * exception or a different than one on this list is thrown, this test will be * marked a failure. */ public Class[] expectedExceptions() default {}; /** * If expectedExceptions was specified, its message must match the regular expression * specified in this attribute. */ public String expectedExceptionsMessageRegExp() default ".*"; /** * The name of the suite this test class should be placed in. This * attribute is ignore if @Test is not at the class level. */ public String suiteName() default ""; /** * The name of the test this test class should be placed in. This * attribute is ignore if @Test is not at the class level. */ public String testName() default ""; /** * @deprecated Use singleThreaded */ public boolean sequential() default false; /** * If set to true, all the methods on this test class are guaranteed to run * sequentially, even if the tests are currently being run with parallel="true". * * This attribute can only be used at the class level and will be ignored * if used at the method level. */ public boolean singleThreaded() default false; /** * The name of the class that should be called to test if the test * should be retried. * @return String The name of the class that will test if a test method * should be retried. */ public Class retryAnalyzer() default Class.class; /** * If true and invocationCount is specified with a value > 1, * then all invocations after a failure will be marked as a SKIP * instead of a FAIL. */ public boolean skipFailedInvocations() default false; /** * If set to true, this test will run even if the methods * it depends on are missing or excluded. */ public boolean ignoreMissingDependencies() default false; /** * The scheduling priority. Lower priorities will be scheduled first. */ int priority() default 0; }