| package org.junit.experimental.theories; |
| |
| import static java.lang.annotation.ElementType.FIELD; |
| import static java.lang.annotation.ElementType.METHOD; |
| |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.RetentionPolicy; |
| import java.lang.annotation.Target; |
| |
| /** |
| * Annotating an field or method with @DataPoint will cause the field value |
| * or the value returned by the method to be used as a potential parameter for |
| * theories in that class, when run with the |
| * {@link org.junit.experimental.theories.Theories Theories} runner. |
| * <p> |
| * A DataPoint is only considered as a potential value for parameters for |
| * which its type is assignable. When multiple {@code DataPoint}s exist |
| * with overlapping types more control can be obtained by naming each DataPoint |
| * using the value of this annotation, e.g. with |
| * <code>@DataPoint({"dataset1", "dataset2"})</code>, and then specifying |
| * which named set to consider as potential values for each parameter using the |
| * {@link org.junit.experimental.theories.FromDataPoints @FromDataPoints} |
| * annotation. |
| * <p> |
| * Parameters with no specified source (i.e. without @FromDataPoints or |
| * other {@link org.junit.experimental.theories.ParametersSuppliedBy |
| * @ParameterSuppliedBy} annotations) will use all {@code DataPoint}s that are |
| * assignable to the parameter type as potential values, including named sets of |
| * {@code DataPoint}s. |
| * |
| * <pre> |
| * @DataPoint |
| * public static String dataPoint = "value"; |
| * |
| * @DataPoint("generated") |
| * public static String generatedDataPoint() { |
| * return "generated value"; |
| * } |
| * |
| * @Theory |
| * public void theoryMethod(String param) { |
| * ... |
| * } |
| * </pre> |
| * |
| * @see org.junit.experimental.theories.Theories |
| * @see org.junit.experimental.theories.Theory |
| * @see org.junit.experimental.theories.DataPoint |
| * @see org.junit.experimental.theories.FromDataPoints |
| */ |
| @Retention(RetentionPolicy.RUNTIME) |
| @Target({FIELD, METHOD}) |
| public @interface DataPoint { |
| String[] value() default {}; |
| Class<? extends Throwable>[] ignoredExceptions() default {}; |
| } |