我现在有下面这样的当前junit案例。
我需要的是只有一个实例并启动服务器一次,而不是Junit在每个测试用例中调用构造函数。我可以在不使用静态的情况下实现这一目标吗?
public class TestIntegration{
public Server testServer;
public TestIntegration(){
testServer = new TestServer();
testServer.start();
}
@Test
public void test1(){
System.out.println("Test 1");
}
@Test
public void test2(){
System.out.println("Test 2");
}
}
答案 0 :(得分:0)
您可以实现Singleton模式:
public class TestIntegration{
public final static Server testServer = new Server();
private TestIntegration() {
}
}
然后拨打电话
TestIntegration.testServer.Start();
答案 1 :(得分:0)
默认情况下,每个测试的一个测试类实例是JUnit的工作方式。
但是您可以使用@BeforeClass注释和静态方法来实现您想要的目的。
public class TestIntegration{
public static TestIntegration testServer;
@BeforeClass
public static void TestIntegration(){
testServer = new TestIntegration();
testServer.start();
}
@Test
public void test1(){
System.out.println("Test 1");
}
@Test
public void test2(){
System.out.println("Test 2");
}
}
答案 2 :(得分:0)
如果要使用非静态对象,请使用注释@Before:
@Before
public void before() {
testServer = new TestServer();
testServer.start();
}
这将在运行测试之前启动服务器。
查看更多信息:http://junit.sourceforge.net/javadoc/org/junit/Before.html
答案 3 :(得分:0)
谢谢
似乎我们可以在junit 5中的每个类上使用测试实例。这就是我们要寻找的