如何在JUnit中实例化共享资源

Use*_*er1 2 java junit

我注意到jUnit为每个被测试的方法运行我的测试类的构造函数.这是一个例子:


public class TestTest {
    protected BigUglyResource bur;
    public TestTest(){
        bur=new BigUglyResource();
        System.out.println("TestTest()");
    }
    @Test
    public void test1(){
        System.out.printf("test1()\n");
    }

    @Test
    public void test2(){
        System.out.printf("test2()\n");
    }
    @Test
    public void test3(){
        System.out.printf("test3()\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

TestTest()
test1()
TestTest()
test2()
TestTest()
test3()

将构造函数调用到BigUglyResource太耗时,我宁愿只构建一次.我知道你可以使用@BeforeClass运行一次方法,但@BeforeClass仅用于静态方法.静态方法无法访问上面示例中的BigUglyResource类属性.除了构建Singleton之外,还有哪些选择?

bru*_*nde 5

你不能声明BigUglyResource静态吗?这就是我通常这样做的方式.

private static BigUglyResource bur;

@BeforeClass
public static void before(){
   bur=new BigUglyResource();
}
Run Code Online (Sandbox Code Playgroud)