簡體   English   中英

為什么我的@AfterClass方法被多次調用?

[英]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的行為符合預期。

我添加了一個后續問題來解決我的實際問題:

如何為所有測試僅一次初始化Spring applicationContext

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM