每个测试的标记钩子 运行

Tagged hooks are running for every test

我的 Hooks class 如下所示:

@Before("@Firefox")
public void setUpFirefox() {}

@Before("@Chrome")
public void setUpChrome() {}

@After
public void tearDown(){}

当我 运行 以下命令时 mvn test -Dcucumber.options="--tags @Chrome" 两个 @Before 函数都在调用。

如何根据 maven 命令 运行 具体 @Before 方法?

My Runner class(我已经尝试使用 tags 选项,它也不适合我):

@RunWith(Cucumber.class)
@CucumberOptions(
        plugin = {"pretty", "json:target/cucumber-reports/Cucumber.json",
                "junit:target/cucumber-reports/Cucumber.xml",
                "html:target/cucumber-reports"},
        features = {"src/test/features/"},
        glue = {"steps"})


public class RunCukesTest {
}

我的专题文件:

Feature: Storybook
  @Test @Widgets @Smoke @Chrome @Firefox
  Scenario: Storybook example
    Given The user clicks on "storybook" index on the homepage
    And Storybook HomePage should be displayed

看起来是因为你有那个场景的两个标签,before 挂钩似乎是根据 运行ning 的场景执行的。例如

-tag命令行--tags@Chrome等指定要运行

哪个场景

-现在基于该场景,使用附加到该场景的标签执行之前的函数(测试、Widgets、Smoke、Chrome、Firefox)

如果您要为 Smoke 标签添加 Before 钩子,我想那也会 运行。

例如:

(在 Scala 中)

Before("@test1") { _ =>
    println("test1 before actioned")
  }

  Before("@test2") { _ =>
    println("test2 before actioned")
  }

使用特征文件:

[...]
  @test1
  Scenario: Test scenario 1
    Given Some precondition occurs

  @test2
  Scenario: Test scenario 2
    Given Some precondition occurs

当我 运行 这些标签中的任何一个时,我得到输出

test1 before actionedtest2 before actioned

但是,如果在一个场景中同时使用两个标签,则会打印两行。

那些 setupChome、setupFirefox 函数中正在执行什么操作,只是设置驱动程序?您可以创建新系统 属性 例如 browser,匹配值并执行一些设置然后您可以输入:

-Dbrowser=chrome 它将以这种方式进行设置。