黄瓜2.4.0标签不适用于Gradle 4.6

cod*_*ent 5 junit cucumber gradle cucumber-jvm junit5

我正在尝试使用标签运行来自Gradle的Cucumber以运行不同的测试集

在开发中我想运行Eat cukes场景:

./gradlew -Dcucumber.options="--tags @dev" clean test
Run Code Online (Sandbox Code Playgroud)

在职业选手,我想运行Eat蘑菇场景:

./gradlew -Dcucumber.options="--tags @pro" clean test
Run Code Online (Sandbox Code Playgroud)

问题是gradle/cucumber似乎忽略了cucumber.options标记信息并且总是运行所有测试.我尝试过与Maven相同的例子,但它确实有用.不幸的是,我需要这个与Gradle一起运行.有任何想法吗?

我的测试运行器是junit-jupiter 5.1.0,带有junit-platform-launcher 1.1.0,junit-jupiter-engine 5.1.0和junit-vintage-engine 5.1.0.

@RunWith(Cucumber.class)
public class CucumberTest {

}
Run Code Online (Sandbox Code Playgroud)

特征:

Feature: Restaurant

  @dev
  Scenario: Eat cukes

    Given I have 10 cukes in my belly
    Then I eat 1 more cukes

  @pro
  Scenario: Eat mushrooms

    Given I have 10 mushrooms in my belly
    Then I eat 1 more mushrooms
Run Code Online (Sandbox Code Playgroud)

开发步骤定义:

public class RestaurantStepDef implements En {

    public RestaurantStepDef() {
        Given("I have (\\d+) cukes in my belly", (Integer cukes) -> System.out.format("Cukes: %n\n", cukes));
        Then("I eat (\\d+) more cukes", (Integer number) -> assertEquals((Integer) 2, number));
    }

}
Run Code Online (Sandbox Code Playgroud)

专业步骤定义:

public class RestaurantStepDef2 implements En {

    public NavegationStepDef2() {
        Given("I have (\\d+) mushrooms in my belly", (Integer cukes) -> System.out.format("Mushrooms: %n\n", cukes));
        Then("I eat (\\d+) more mushrooms", (Integer number) -> assertEquals((Integer) 2, number));
    }

}
Run Code Online (Sandbox Code Playgroud)

小智 0

Gradle 将测试执行分叉到不同的 JVM 中,因此初始系统属性不会被保留

将其添加到您的 gradle 文件中

test { systemProperty "cucumber.options", System.getProperty("cucumber.options") }