001 package org.junit;
002
003 import java.lang.annotation.ElementType;
004 import java.lang.annotation.Retention;
005 import java.lang.annotation.RetentionPolicy;
006 import 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 * @BeforeClass public static void onlyOnce() {
020 * ...
021 * }
022 * @Test public void one() {
023 * ...
024 * }
025 * @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)
036 public @interface BeforeClass {
037 }