blob: 79183693ec8e2b2fa0ffab9d9dfceba71317733a [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base.test.params;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Annotations for Parameterized Tests
*/
public class ParameterAnnotations {
/**
* Annotation for test methods to indicate associated {@link ParameterProvider}.
* Note: the class referred to must be public and have a public default constructor.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface UseMethodParameter {
Class<? extends ParameterProvider> value();
}
/**
* Annotation for methods that should be called before running a test with method parameters.
*
* In order to use this, add a {@link MethodParamAnnotationRule} annotated with
* {@code @}{@link org.junit.Rule Rule} to your test class.
* @see ParameterProvider
* @see UseMethodParameterAfter
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface UseMethodParameterBefore {
Class<? extends ParameterProvider> value();
}
/**
* Annotation for methods that should be called after running a test with method parameters.
*
* In order to use this, add a {@link MethodParamAnnotationRule} annotated with
* {@code @}{@link org.junit.Rule Rule} to your test class.
* @see ParameterProvider
* @see UseMethodParameterBefore
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface UseMethodParameterAfter {
Class<? extends ParameterProvider> value();
}
/**
* Annotation for static field of a `List<ParameterSet>` for entire test class
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ClassParameter {}
/**
* Annotation for static field of a `List<ParameterSet>` of TestRule
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface RuleParameter {}
/**
* Annotation for test class, it specifies which ParameterizeRunnerDelegate to use.
*
* The default ParameterizedRunnerDelegate is BaseJUnit4RunnerDelegate.class
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface UseRunnerDelegate {
Class<? extends ParameterizedRunnerDelegate> value();
}
}