在不同的JUnit测试之间共享对象引用

mar*_*usw 5 java junit

我有几个JUnit测试,需要一个昂贵的资源(一个WALA类hierachie)的参考,需要大约30秒创建.我想在我的整个测试套件中分享这个参考.

我想到了一个基类中的静态成员,它是用@BeforeClass方法启动的.运行测试后,无论如何都应该确定JVM.

有没有其他方法可以实现这一目标?或任何其他最佳做法?

Dav*_*les 3

创建一个显式测试套件(参见此答案)来运行这些测试,并在套件本身上使用@BeforeClass和(参见此答案):@AfterClass

@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class, Test2.class})
public class MySuite {
    @BeforeClass
    public static void initResource() {
        MyExpensiveResource.init();
    }

    @AfterClass
    public static void disposeResource() {
        MyExpensiveResource.dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)