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

cgvd09ve  于 2022-11-11  发布在  其他
关注(0)|答案(5)|浏览(200)

我有当前现有的junit案例,如下所示。
我需要的是只拥有一个示例并启动服务器一次,而不是每次测试用例Junit都调用构造函数。我能不使用static实现这一点吗?

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

}
x9ybnkn6

x9ybnkn61#

您可以实现Singleton模式:

public class TestIntegration{
public final static Server testServer = new Server();

private TestIntegration() {
    }     
}

那就叫

TestIntegration.testServer.Start();
mkh04yzy

mkh04yzy2#

默认情况下,每个测试都有一个测试类示例,这是JUnit的工作方式。
但是您可以使用@BeforeClass注解和static来实现您正在尝试做的事情。

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

}
qf9go6mv

qf9go6mv3#

如果要处理非静态对象,请使用"之前标注:

@Before
public void before() {
    testServer = new TestServer();
    testServer.start();
}

这将在运行测试之前启动服务器。
查看更多信息:http://junit.sourceforge.net/javadoc/org/junit/Before.html

8yparm6h

8yparm6h4#

谢谢
看起来我们可以在junit5中使用每个类的测试示例。这些就是我们正在寻找的

bweufnob

bweufnob5#

您只需要将下面的代码添加到类的顶部,就可以使每个类都有一个示例。

@TestInstance(TestInstance.Lifecycle.PER_CLASS)

相关问题