gpt4 book ai didi

java - 如何为测试类中的所有测试启动一次 Jersey 测试容器(Grizzly)?

转载 作者:搜寻专家 更新时间:2023-10-31 19:44:13 25 4
gpt4 key购买 nike

我正在努力修复其中一个项目中的集成测试。目前,所有集成测试类都扩展了 JerseyTest 类。通过 JerseyTest class我意识到它使用 Junit 的 Before 和 After 注释为每个测试方法启动和停止容器。

为什么这是必要的?如果我们启动容器一次,运行测试并在测试结束时关闭它,这还不够吗?

我们也使用 Spring,它需要时间来初始化上下文。

在 Junit4 之前,我们通过使用 boolean 标志手动处理来解决这个限制。

@Before
public void setup() {
if(!containerStarted) {
// start
containerStarted = true;
}
// else do nothing
}

最佳答案

您可以使用@BeforeClass 和@AfterClass 来覆盖JerseyTest 的@Before 和@After 生命周期。这是代码模板:

public abstract class MyJerseyTest {
private JerseyTest jerseyTest;
public MyJerseyTest(){

}

@BeforeClass
public void setUp() throws Exception {
initJerseyTest()
jerseyTest.setUp();
}

@AfterClass
public void tearDown() throws Exception {
jerseyTest.tearDown();
}

private void initJerseyTest() {
jerseyTest = new JerseyTest() {
@Override
protected Application configure() {
// do somthing like
enable(...);
set(...);

// create ResourceConfig instance
ResourceConfig rc = new ResourceConfig();

// do somthing like
rc.property(...);
rc.register(...);

return rc;
}
};
}
}

希望对您有所帮助。

关于java - 如何为测试类中的所有测试启动一次 Jersey 测试容器(Grizzly)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com