Выполнить шаг Cucumber до / после определенной функции

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

это возможно?

4 ответов


вы используете огурец-jvm? Я нашел статью, которая соответствует вашим требованиям.

http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/

в принципе, не используйте JUnit @BeforeClass и @AfterClass для этого, поскольку они не знают о тегах Cucumber Hook. Вы хотите, чтобы методы Init и Teardown запускались только для определенных сценариев?


это если вы используете junit для запуска тестов. Мы используем аннотации для создания класса модульного теста и отдельного класса шагов. Стандартный @Before материал входит в класс steps, но аннотацию @BeforeClass можно использовать в основном классе модульного теста:

@RunWith(Cucumber.class)
@Cucumber.Options(format = {"json", "<the report file"},
    features = {"<the feature file>"},
    strict = false,
    glue = {"<package with steps classes"})
public class SomeTestIT {
    @BeforeClass
    public static void setUp(){
       ...
    }

    @AfterClass
    public static void tearDown(){
       ...
    }
}

попробуйте это :

в файле :

@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly
Feature : My new feature ....

В Stepdefinitions.java :

@Before("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}

@After("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}

вы можете использовать somefeaturefile.функция

фон: Учитывая, что у меня есть яблоко

сценарий: есть яблоко Когда я ем яблоко Тогда мой живот должен вырасти

здесь действие написано в фоновом режиме будет выполняться перед каждым сценарием.