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 }