我注意到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之外,还有哪些选择?
答案 0 :(得分:5)
你不能声明BigUglyResource
静态吗?这就是我通常的做法。
private static BigUglyResource bur;
@BeforeClass
public static void before(){
bur=new BigUglyResource();
}
答案 1 :(得分:1)
你可以让“bur”静止:
protected static BigUglyResource bur;
并使用@BeforeClass。