簡體   English   中英

使用 Cucumber 在 Spring 中指定不與 TestNG 運行器並行運行的測試用例

[英]Specify test case not to run in parallel with TestNG runner in Spring using Cucumber

我已經能夠將項目配置為使用 TestNG 運行器並行運行測試用例; 但是,有一些場景不是線程安全的。 如果這些測試用例要並行運行,它們會相互干擾。 現在有幾種方法可以使這些場景線程安全,但我想知道是否有辦法指定這些 Cucumber 場景不並行運行。

我可以配置一個特定的標簽來標記不並行運行的場景嗎? 指定某些功能文件不並行運行? 我相信我可能會遇到類似 JUnit 5 的情況,但是 TestNG 是否存在這種情況?

與 JUnit 5 不同,TestNG 不提供這種細粒度的控件。 充其量您可以創建多個具有不同功能選擇和不同配置的運行器類,用於並行/串行執行。

我剛剛意識到的另一件事是我可以將線程數作為參數。 默認為 1 個線程。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven.surefire.version}</version>
    <configuration>
        <testFailureIgnore>true</testFailureIgnore>
                    <properties>
                        <property>
                            <name>dataproviderthreadcount</name>
                            <value>1</value>
                        </property>
                    </properties>
                    <includes>
                        <include>api.automation.tests.runners.TestNGRunnerTest</include>
                    </includes>
    </configuration>
</plugin>

我有一個 Jenkins 版本,其中所有測試都標記有相同的名稱,可以與需要的線程並行運行。

mvn clean test -Dcucumber.filter.tags="${CucumberFilterTag} and not @opentofix" -Dspring.profiles.active=${Environment} -Ddataproviderthreadcount=4

在另一個版本中,我有一個非常相似的命令(帶有不同的標簽),只是沒有添加爭論; 僅使用一個線程的默認值。 這將一次運行所有這些標記的測試。

mvn clean test -Dcucumber.filter.tags="${CucumberFilterTag} and not @opentofix" -Dspring.profiles.active=${Environment}

無論哪種方式,第一個答案仍然有效,但只是想增加這種可能性。

暫無
暫無

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

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