簡體   English   中英

如何使用路徑通過 maven-surefire-plugin 包含集成測試

[英]How to include integration tests via maven-surefire-plugin using path

我的 Java Maven 項目在目錄結構中將單元測試與集成測試分開:

  • src/test/java下的單元測試;
  • 集成測試src/integration-test/java

src/integration-test/java是一個非默認的測試源目錄,所以我使用build-helper-maven-plugin手動將它添加到項目中,如您所見:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
            <execution>
                <id>add-integration-test-sources</id>
                <phase>generate-test-sources</phase>
                <goals>
                    <goal>add-test-source</goal>
                </goals>
                <configuration>
                    <sources>
                        <source>src/integration-test/java</source>
                    </sources>
                </configuration>
            </execution>
            ...
        </executions>
    </plugin>

我還使用maven-failsafe-plugin在測試執行流程中包含測試集成類,如下所示。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>3.0.0-M4</version>
        <configuration>
            <includes>
                <include>**/*IntegrationTest.java</include>
            </includes>
        </configuration>
        <executions>
            <execution>
                <id>integration-tests</id>
                <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                </goals>
                <configuration>
                    ...
                </configuration>
            </execution>
        </executions>
    </plugin>

這種方法有效,但迫使我在測試類中使用命名約定。 准確地說,只會執行以“IntegrationTest”結尾的那些。

我想根據路徑中的命名約定而不是文件名來配置插件。 准確地說,我打算允許src/integration-test/java下的所有類,而不管文件名。 到目前為止,我沒有成功,網絡上的每個教程都只展示了我在上面實現和展示的方法。

有沒有人對如何做到這一點有任何建議?

謝謝

AFAIK,兩個插件(surefire 和 failsafe)都只使用類路徑。 因此,要實現您想要的目標,您要么必須使用命名約定(例如標准測試與 IT),要么使用兩個不同的模塊。

我能找到的唯一其他(非常丑陋的)解決方案是:

  • 將正常的單元測試也放在另一個目錄中
  • 創建兩個配置文件
    • 一個用於在 build-helper 中使用相應源目錄的surefire
    • 使用 build-helper 中相應的源目錄進行故障安全的第二個
  • 在每個配置文件中,您通過其配置停用其他測試插件
  • 使 Surefire 配置文件 activeByDefault
  • 在集成測試階段,在當前 pom 上執行一個調用程序,停用 Surefire 配置文件並激活另一個

這可能有效,但維護和編碼是地獄;)

暫無
暫無

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

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