gpt4 book ai didi

java - 为什么我的 @AfterClass 方法被多次调用?

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:27 25 4
gpt4 key购买 nike

为了测试 REST 服务,我构建了一个基类“RestTestBase”来启动嵌入式 Jetty 服务器:

class RestTestBase {
protected static AnnotationConfigWebApplicationContext rootCtx;
protected static AnnotationConfigWebApplicationContext webCtx;
private static Server jettyServer;

@BeforeClass
public static void initSpringAndJetty() {
if(jettyServer == null) {
// init jetty and spring
}
}

@AfterClass
public static void shutdownJetty() {
if(jettyServer!=null && jettyServer.isRunning()) {
// shutdown jetty and stop spring contexts
}
}
}

当我在 Eclipse IDE 的单线程环境中运行它时,一切都很好。 Jetty 和 Spring 仅初始化一次,然后运行所有测试,然后关闭 jetty。

但是,当我使用 Maven Surefire 在多线程环境中运行它时,每次测试都会重新初始化 Jetty 服务器。这是为什么?

这是我的万无一失的配置:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkCount>0</forkCount>
<reuseForks>true</reuseForks>
</configuration>
</plugin>
</plugins>
</build>

最佳答案

好吧,这个问题似乎有点没有捕获要点,因为 @BeforeClass 和 @AfterClass 的行为符合预期。

我添加了一个后续问题来解决我的实际问题:

How can I initialize a Spring applicationContext just once for all tests

关于java - 为什么我的 @AfterClass 方法被多次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22936404/

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