001package org.junit;
002
003import java.lang.annotation.ElementType;
004import java.lang.annotation.Retention;
005import java.lang.annotation.RetentionPolicy;
006import java.lang.annotation.Target;
007
008/**
009 * Sometimes several tests need to share computationally expensive setup
010 * (like logging into a database). While this can compromise the independence of
011 * tests, sometimes it is a necessary optimization. Annotating a <code>public static void</code> no-arg method
012 * with <code>@BeforeClass</code> causes it to be run once before any of
013 * the test methods in the class. The <code>@BeforeClass</code> methods of superclasses
014 * will be run before those of the current class, unless they are shadowed in the current class.
015 * <p>
016 * For example:
017 * <pre>
018 * public class Example {
019 *    &#064;BeforeClass public static void onlyOnce() {
020 *       ...
021 *    }
022 *    &#064;Test public void one() {
023 *       ...
024 *    }
025 *    &#064;Test public void two() {
026 *       ...
027 *    }
028 * }
029 * </pre>
030 *
031 * @see org.junit.AfterClass
032 * @since 4.0
033 */
034@Retention(RetentionPolicy.RUNTIME)
035@Target(ElementType.METHOD)
036public @interface BeforeClass {
037}