Крюки с тегами работают для каждого теста - PullRequest
0 голосов
/ 09 июля 2019

Мой класс Hooks, как показано ниже:

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

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

@After
public void tearDown(){}

Когда я запускаю следующую команду mvn test -Dcucumber.options="--tags @Chrome", обе @Before функции вызывают.

Как запустить определенный метод @Before в зависимости от команды maven?

Мой класс Runner (я уже пробовал с опцией 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

1 Ответ

2 голосов
/ 09 июля 2019

Похоже, это потому, что у вас есть оба тега для этого сценария, кажется, что ловушки before выполняются в зависимости от запущенного сценария. например,

- Командная строка тега --tags @Chrome и т. Д. Указывает, какой сценарий следует запустить

-Теперь на основе этого сценария выполните функции before с тегами, прикрепленными к этому сценарию (Test, Widgets, Smoke, Chrome, Firefox)

Если бы у вас был хук "До" для тега "Дым", я бы подумал, что он также будет работать.

Например:

(это в Скале)

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 actioned или test2 before actioned

Однако, если в одном сценарии есть оба тега, то печатаются обе строки.

Что действует в этих функциях setupChome, setupFirefox, просто настраивая драйвер? Вы можете создать новое системное свойство, такое как, например, browser, сопоставить значение и выполнить некоторые настройки, после чего вы можете ввести:

-Dbrowser=chrome и он будет выполнять настройку таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...