Как до и после сценария работает в JBehave - PullRequest
0 голосов
/ 05 июня 2018

Может кто-нибудь показать примеры того, как beforeScenario и afterScenario работают в JBehave?

Я создал класс с двумя методами gearUp с @ BeforeScenario и tearDown с @ AfterScenario аннотации.

Но эти методы никогда не вызываются в JBehave.

Какие дополнительные конфигурации необходимы.Любые примеры кода помогут нам.

В то время как этот простой и аккуратный в Cucumber.

Ниже приведен мой файл истории с одним шагом (src / test / resources / storeis):

Scenario:  SampleTest

Given I am test

Ниже приведен файл моих шагов

public class jbehavetc {

    @Given("I am test")
    public void startOnUrl(String url) {
       System.out.println("I am actual test");
    }
}

Ниже приведен файл моих хуков, который содержит методы BeforeScenario и AfterScenario

public class Hooks {

    @BeforeScenario
    public void startSystem() throws Exception {
       System.out.println("I am before scenario");
    }

    @AfterScenario
    public void stopSystem() throws Exception {
       System.out.println("I am after scenario");
    }

}

Для запуска вышеупомянутой истории я создал файл бегуна и хотелработать как JUnit Test ( Поправьте меня, это не правильный подход )

public class JBehaveRunner extends JUnitStory{


    @Override
    public Configuration configuration() {
        return new MostUsefulConfiguration()
            .useStoryLoader(
                new LoadFromClasspath(getClass().getClassLoader()))
            .useStoryReporterBuilder(   
                new StoryReporterBuilder()
                    .withDefaultFormats()
                    .withFormats(Format.HTML));
    }

    @Override
    public InjectableStepsFactory stepsFactory() {
        return new InstanceStepsFactory(configuration(), new jbehavetc(), 
            new Hooks());
    }

    public List<String> storyPaths() {
        return new StoryFinder().findPaths(
            CodeLocations.codeLocationFromClass(this.getClass()),
            Arrays.asList("**/*.story"),
            Arrays.asList(""));
    }

    @Test
    public void run() throws Throwable {
        super.run();
    }
}

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

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

У меня начал работать следующий файл бегуна:

public class JBehaveRunner extends JUnitStories {

    @Override
    public Configuration configuration() {
        return new MostUsefulConfiguration()
            .useStoryLoader(
                new LoadFromClasspath(getClass().getClassLoader()))
            .useStoryReporterBuilder(
                new StoryReporterBuilder()
                    .withDefaultFormats()
                    .withFormats(Format.HTML));
    }

    @Override
    public InjectableStepsFactory stepsFactory() {
        return new InstanceStepsFactory(configuration(), new HomePageSteps(), 
            new BaseEngine());
    }

    @Test
    public void run() throws Throwable {
        super.run();
    }

    @Override
    public List<String> storyPaths() {
        return new StoryFinder().findPaths(
            CodeLocations.codeLocationFromClass(this.getClass()),
            Arrays.asList("**/*.story"),
            Arrays.asList(""));    
    }
}
0 голосов
/ 05 июня 2018

Вы должны обрабатывать класс с @BeforeScenario / @AfterScenario как классы с реализациями шагов: вы должны зарегистрировать их в вашей фабрике шагов.

BeforeAndAfterSteps.java

public class BeforeAndAfterSteps {

    @BeforeScenario
    public void beforeScenario() throws Exception {
        // setup
    }

    @AfterScenario
    public void afterScenario() throws Exception {
        // teardown
    }
}

Пример заводской конфигурации шагов

new InstanceStepsFactory(configuration, new BeforeAndAfterSteps())

Официальные примеры JBehave:

...