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

时间:2009-11-24 23:16:37

标签: 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");
    }
}

给出以下结果:

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

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

2 个答案:

答案 0 :(得分:5)

你不能声明BigUglyResource静态吗?这就是我通常的做法。

private static BigUglyResource bur;

@BeforeClass
public static void before(){
   bur=new BigUglyResource();
}

答案 1 :(得分:1)

你可以让“bur”静止:

protected static BigUglyResource bur;

并使用@BeforeClass。