package org.junit; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** *

If you allocate expensive external resources in a {@link org.junit.BeforeClass} method you need to release them * after all the tests in the class have run. Annotating a public static void method * with @AfterClass causes that method to be run after all the tests in the class have been run. All @AfterClass * methods are guaranteed to run even if a {@link org.junit.BeforeClass} method throws an * exception. The @AfterClass methods declared in superclasses will be run after those of the current * class.

* * Here is a simple example: *
 * public class Example {
 *    private static DatabaseConnection database;
 *    @BeforeClass public static void login() {
 *          database= ...;
 *    }
 *    @Test public void something() {
 *          ...
 *    }
 *    @Test public void somethingElse() {
 *          ...
 *    }
 *    @AfterClass public static void logout() {
 *          database.logout();
 *    }
 * }
 * 
* * @see org.junit.BeforeClass * @see org.junit.Test */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface AfterClass { }