我注意到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,还有什么选择?
3条答案
按热度按时间q3qa4bjr1#
你不能声明
BigUglyResource
为静态吗?这是我通常的做法。4si2a6ki2#
您可以使“bur”成为静态:
并使用@BeforeClass。
iecba09b3#
对于JUnit5用户:您必须使用
@BeforeAll
注解而不是@BeforeEach
,其余内容与Bruno和Russ的答案相同。