[英]Why is my @AfterClass method called multiple times?
為了測試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服務器將針對每個測試重新初始化。 這是為什么?
這是我的surefire配置:
<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的行為符合預期。
我添加了一個后續問題來解決我的實際問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.