每个junit一个实例,而不是每个测试用例每个新实例

时间:2018-10-19 07:23:55

标签: java junit junit5

我现在有下面这样的当前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");
    } 


}

4 个答案:

答案 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中的每个类上使用测试实例。这就是我们要寻找的