xref: /aosp_15_r20/external/junit-params/src/main/java/junitparams/Parameters.java (revision b2c653efad15baf736c94ef04454e05088f2cbb7)
1*b2c653efSSorin Basca package junitparams;
2*b2c653efSSorin Basca 
3*b2c653efSSorin Basca import java.lang.annotation.Retention;
4*b2c653efSSorin Basca import java.lang.annotation.RetentionPolicy;
5*b2c653efSSorin Basca 
6*b2c653efSSorin Basca /**
7*b2c653efSSorin Basca  * THE annotation for the test parameters. Use it to say that a method takes
8*b2c653efSSorin Basca  * some parameters and define how to obtain them.
9*b2c653efSSorin Basca  *
10*b2c653efSSorin Basca  * @author Pawel Lipinski
11*b2c653efSSorin Basca  */
12*b2c653efSSorin Basca @Retention(RetentionPolicy.RUNTIME)
13*b2c653efSSorin Basca public @interface Parameters {
14*b2c653efSSorin Basca     /**
15*b2c653efSSorin Basca      * Parameter values defined as a String array. Each element in the array is
16*b2c653efSSorin Basca      * a full parameter set, comma-separated or pipe-separated ('|').
17*b2c653efSSorin Basca      * The values must match the method parameters in order and type.
18*b2c653efSSorin Basca      * Whitespace characters are trimmed (use source class or method if You need to provide such parameters)
19*b2c653efSSorin Basca      *
20*b2c653efSSorin Basca      * Example: <code>@Parameters({
21*b2c653efSSorin Basca      *                    "1, joe, 26.4, true",
22*b2c653efSSorin Basca      *                    "2, angie, 37.2, false"})</code>
23*b2c653efSSorin Basca      */
value()24*b2c653efSSorin Basca     String[] value() default {};
25*b2c653efSSorin Basca 
26*b2c653efSSorin Basca     /**
27*b2c653efSSorin Basca      * Parameter values defined externally. The specified class must have at
28*b2c653efSSorin Basca      * least one public static method starting with <code>provide</code>
29*b2c653efSSorin Basca      * returning <code>Object[]</code>. All such methods are used, so you can
30*b2c653efSSorin Basca      * group your examples. The resulting array should contain parameter sets in
31*b2c653efSSorin Basca      * its elements. Each parameter set must be another Object[] array, which
32*b2c653efSSorin Basca      * contains parameter values in its elements.
33*b2c653efSSorin Basca      * Example: <code>@Parameters(source = PeopleProvider.class)</code>
34*b2c653efSSorin Basca      */
source()35*b2c653efSSorin Basca     Class<?> source() default Void.class;
36*b2c653efSSorin Basca 
37*b2c653efSSorin Basca     /**
38*b2c653efSSorin Basca      * Parameter values returned by a method within the test class. This way you
39*b2c653efSSorin Basca      * don't need additional classes and the test code may be a bit cleaner. The
40*b2c653efSSorin Basca      * format of the data returned by the method is the same as for the source
41*b2c653efSSorin Basca      * annotation class.
42*b2c653efSSorin Basca      * Example: <code>@Parameters(method = "examplaryPeople")</code>
43*b2c653efSSorin Basca      *
44*b2c653efSSorin Basca      * You can use multiple methods to provide parameters - use comma to do it:
45*b2c653efSSorin Basca      * Example: <code>@Parameters(method = "womenParams, menParams")</code>
46*b2c653efSSorin Basca      */
method()47*b2c653efSSorin Basca     String method() default "";
48*b2c653efSSorin Basca }
49