Cucumber jvm - указать несколько тегов, которые следует игнорировать в After hook

Я пишу несколько тестов, используя cucumber jvm, которые требуют нескольких различных вариантов поведения для некоторых функций. , при этом в большинстве сценариев требуется общий демонтаж.

До сих пор мне удавалось успешно заставить огурец запустить обычный демонтаж (используя аннотацию «@After») для большинства моих сценариев. Кроме того, я указал тег для игнорирования небольшого подмножества сценариев, поэтому в этих случаях я могу использовать определенный разрыв. Вот сжатый пример, показывающий только аннотации:

@After("~@specificTearDown")
public void tearDown(){
  // some tear down code
}

@After("@specificTearDown")
public void specialTearDown(){
  // some code specific to a scenario
}

Я использую символ «~», чтобы указать помеченные сценарии/функции, которые следует игнорировать.

Это работает хорошо, и я получаю первый метод разрыва, вызываемый в большинстве сценариев, а второй работает только для помеченных сценариев.

Моя проблема в том, что теперь мне нужно указать второй конкретный метод разрыва для другого сценария, но огурец, похоже, не любит игнорировать более 1 тега.

Я пробовал следующее, но безуспешно...

@After("~@specificTearDown, ~@anotherSpecificTearDown")
public void tearDown(){
  // some tear down code
}

@After("@specificTearDown")
public void specialTearDown(){
  // some code specific to a scenario
}

@After("@anotherSpecificTearDown")
public void anotherSpecificTearDown(){
  // some code specific to a scenario
}

Это приводит к тому, что огурец просто запускает первый метод удаления для всех сценариев, что приводит к конфликту моих тестов, поскольку другие методы удаления также выполняются для помеченных сценариев.

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


person Jeremy    schedule 23.11.2015    source источник


Ответы (2)


Я думаю, что это должно работать:

@After({"~@specificTearDown", "~@anotherSpecificTearDown"})
public void tearDown(){
  // some tear down code
}

Не могли бы вы попробовать? Надеюсь, поможет

person troig    schedule 24.11.2015

@After("@tag1, @tag2") у меня работает.

person Cinders    schedule 31.03.2016
comment
Это то, что я делал изначально, но обнаружил, что мне нужно заключить несколько тегов, разделенных запятыми, в фигурные скобки, чтобы это работало, иначе они просто игнорировались. (согласно принятому ответу от @troig) - person Jeremy; 01.04.2016
comment
Лично мне это также легче читать при просмотре теста, если вы его раньше не видели. - person Peter Channon; 24.01.2017