All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.junit.Rule Maven / Gradle / Ivy

package org.junit;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Annotates fields that reference rules or methods that return a rule. A field must be public, not
 * static, and a subtype of {@link org.junit.rules.TestRule} (preferred) or
 * {@link org.junit.rules.MethodRule}. A method must be public, not static,
 * and must return a subtype of {@link org.junit.rules.TestRule} (preferred) or
 * {@link org.junit.rules.MethodRule}.

* * The {@link org.junit.runners.model.Statement} passed * to the {@link org.junit.rules.TestRule} will run any {@link Before} methods, * then the {@link Test} method, and finally any {@link After} methods, * throwing an exception if any of these fail. If there are multiple * annotated {@link Rule}s on a class, they will be applied in order of fields first, then methods. * However, if there are mutliple fields (or methods) they will be applied in an order * that depends on your JVM's implementation of the reflection API, which is * undefined, in general. Rules defined by fields will always be applied * before Rules defined by methods.

* * For example, here is a test class that creates a temporary folder before * each test method, and deletes it after each: * *

 * public static class HasTempFolder {
 *     @Rule
 *     public TemporaryFolder folder= new TemporaryFolder();
 *
 *     @Test
 *     public void testUsingTempFolder() throws IOException {
 *         File createdFile= folder.newFile("myfile.txt");
 *         File createdFolder= folder.newFolder("subfolder");
 *         // ...
 *     }
 * }
 * 
* * And the same using a method. * *
 * public static class HasTempFolder {
 *     private TemporaryFolder folder= new TemporaryFolder();
 *
 *     @Rule
 *     public TemporaryFolder getFolder() {
 *         return folder;
 *     }
 *
 *     @Test
 *     public void testUsingTempFolder() throws IOException {
 *         File createdFile= folder.newFile("myfile.txt");
 *         File createdFolder= folder.newFolder("subfolder");
 *         // ...
 *     }
 * }
 * 
* * For more information and more examples, see * {@link org.junit.rules.TestRule}. * * @since 4.7 */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD, ElementType.METHOD}) public @interface Rule { }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy