![](/img/trans.png)
[英]Can't run individual Cucumber scenarios using TestNG test runner
[英]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.