How to instantiate a shared resource in JUnit

I noticed that jUnit runs the constructor of my test class for each method being tested. Here's an example:


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

Gives the following result:

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

Calling the constructor to BigUglyResource is too time-consuming, I'd prefer to build it only once. I know you can use @BeforeClass to run a method once, but @BeforeClass is only for static methods. Static methods can't access a class property like BigUglyResource in the example above. Other than building a Singleton, what options are there?


Can't you declare the BigUglyResource static? This is how I normally do it.

private static BigUglyResource bur;

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

You could make "bur" static:

protected static BigUglyResource bur;

And use @BeforeClass.

链接地址: http://www.djcxy.com/p/64092.html

上一篇: JUnit测试抛出异常的错误形式?

下一篇: 如何在JUnit中实例化共享资源