Search in sources :

Example 11 with Glue

use of io.cucumber.core.backend.Glue in project cucumber-jvm by cucumber.

the class RunnerTest method all_static_hooks_execute_also_after_failure.

@Test
void all_static_hooks_execute_also_after_failure() {
    StaticHookDefinition beforeAllHook = createStaticHook();
    StaticHookDefinition failingBeforeAllHook = createStaticHook();
    doThrow(new RuntimeException("boom")).when(failingBeforeAllHook).execute();
    TestRunnerSupplier runnerSupplier = new TestRunnerSupplier(bus, runtimeOptions) {

        @Override
        public void loadGlue(Glue glue, List<URI> gluePaths) {
            glue.addBeforeAllHook(beforeAllHook);
            glue.addBeforeAllHook(failingBeforeAllHook);
        }
    };
    Runner runner = runnerSupplier.get();
    assertThrows(RuntimeException.class, runner::runBeforeAllHooks);
    InOrder inOrder = inOrder(beforeAllHook, failingBeforeAllHook);
    inOrder.verify(beforeAllHook).execute();
    inOrder.verify(failingBeforeAllHook).execute();
}
Also used : InOrder(org.mockito.InOrder) Glue(io.cucumber.core.backend.Glue) StaticHookDefinition(io.cucumber.core.backend.StaticHookDefinition) Collections.singletonList(java.util.Collections.singletonList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List) Test(org.junit.jupiter.api.Test)

Example 12 with Glue

use of io.cucumber.core.backend.Glue in project cucumber-jvm by cucumber.

the class RunnerTest method aftersteps_are_executed_after_failed_step.

@Test
void aftersteps_are_executed_after_failed_step() {
    StubStepDefinition stepDefinition = spy(new StubStepDefinition("some step") {

        @Override
        public void execute(Object[] args) {
            super.execute(args);
            throw new RuntimeException();
        }
    });
    Pickle pickleMatchingStepDefinitions = createPickleMatchingStepDefinitions(stepDefinition);
    final HookDefinition afterStepHook = createHook();
    TestRunnerSupplier runnerSupplier = new TestRunnerSupplier(bus, runtimeOptions) {

        @Override
        public void loadGlue(Glue glue, List<URI> gluePaths) {
            glue.addAfterHook(afterStepHook);
            glue.addStepDefinition(stepDefinition);
        }
    };
    runnerSupplier.get().runPickle(pickleMatchingStepDefinitions);
    InOrder inOrder = inOrder(afterStepHook, stepDefinition);
    inOrder.verify(stepDefinition).execute(any(Object[].class));
    inOrder.verify(afterStepHook).execute(any(TestCaseState.class));
}
Also used : Pickle(io.cucumber.core.gherkin.Pickle) InOrder(org.mockito.InOrder) Glue(io.cucumber.core.backend.Glue) Collections.singletonList(java.util.Collections.singletonList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List) StaticHookDefinition(io.cucumber.core.backend.StaticHookDefinition) HookDefinition(io.cucumber.core.backend.HookDefinition) Test(org.junit.jupiter.api.Test)

Example 13 with Glue

use of io.cucumber.core.backend.Glue in project cucumber-jvm by cucumber.

the class RunnerTest method steps_are_executed.

@Test
void steps_are_executed() {
    StubStepDefinition stepDefinition = new StubStepDefinition("some step");
    Pickle pickleMatchingStepDefinitions = createPickleMatchingStepDefinitions(stepDefinition);
    TestRunnerSupplier runnerSupplier = new TestRunnerSupplier(bus, runtimeOptions) {

        @Override
        public void loadGlue(Glue glue, List<URI> gluePaths) {
            glue.addStepDefinition(stepDefinition);
        }
    };
    runnerSupplier.get().runPickle(pickleMatchingStepDefinitions);
    assertThat(stepDefinition.getArgs(), is(equalTo(emptyList())));
}
Also used : Pickle(io.cucumber.core.gherkin.Pickle) Glue(io.cucumber.core.backend.Glue) Collections.singletonList(java.util.Collections.singletonList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List) Test(org.junit.jupiter.api.Test)

Example 14 with Glue

use of io.cucumber.core.backend.Glue in project cucumber-jvm by cucumber.

the class RunnerTest method aftersteps_executed_for_passed_step.

@Test
void aftersteps_executed_for_passed_step() {
    StubStepDefinition stepDefinition = spy(new StubStepDefinition("some step"));
    Pickle pickle = createPickleMatchingStepDefinitions(stepDefinition);
    HookDefinition afteStepHook1 = createHook();
    HookDefinition afteStepHook2 = createHook();
    TestRunnerSupplier runnerSupplier = new TestRunnerSupplier(bus, runtimeOptions) {

        @Override
        public void loadGlue(Glue glue, List<URI> gluePaths) {
            glue.addAfterHook(afteStepHook1);
            glue.addAfterHook(afteStepHook2);
            glue.addStepDefinition(stepDefinition);
        }
    };
    runnerSupplier.get().runPickle(pickle);
    InOrder inOrder = inOrder(afteStepHook1, afteStepHook2, stepDefinition);
    inOrder.verify(stepDefinition).execute(any(Object[].class));
    inOrder.verify(afteStepHook2).execute(any(TestCaseState.class));
    inOrder.verify(afteStepHook1).execute(any(TestCaseState.class));
}
Also used : Pickle(io.cucumber.core.gherkin.Pickle) InOrder(org.mockito.InOrder) Glue(io.cucumber.core.backend.Glue) Collections.singletonList(java.util.Collections.singletonList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List) StaticHookDefinition(io.cucumber.core.backend.StaticHookDefinition) HookDefinition(io.cucumber.core.backend.HookDefinition) Test(org.junit.jupiter.api.Test)

Example 15 with Glue

use of io.cucumber.core.backend.Glue in project cucumber-jvm by cucumber.

the class RunnerTest method hooks_not_executed_in_dry_run_mode.

@Test
void hooks_not_executed_in_dry_run_mode() {
    RuntimeOptions runtimeOptions = new RuntimeOptionsBuilder().setDryRun().build();
    StaticHookDefinition beforeAllHook = createStaticHook();
    StaticHookDefinition afterAllHook = createStaticHook();
    HookDefinition beforeHook = createHook();
    HookDefinition afterHook = createHook();
    HookDefinition beforeStepHook = createHook();
    HookDefinition afterStepHook = createHook();
    TestRunnerSupplier runnerSupplier = new TestRunnerSupplier(bus, runtimeOptions) {

        @Override
        public void loadGlue(Glue glue, List<URI> gluePaths) {
            glue.addBeforeAllHook(beforeAllHook);
            glue.addAfterAllHook(afterAllHook);
            glue.addBeforeHook(beforeHook);
            glue.addAfterHook(afterHook);
            glue.addBeforeStepHook(beforeStepHook);
            glue.addAfterStepHook(afterStepHook);
        }
    };
    runnerSupplier.get().runBeforeAllHooks();
    runnerSupplier.get().runPickle(createPicklesWithSteps());
    runnerSupplier.get().runAfterAllHooks();
    verify(beforeAllHook, never()).execute();
    verify(afterAllHook, never()).execute();
    verify(beforeHook, never()).execute(any(TestCaseState.class));
    verify(afterHook, never()).execute(any(TestCaseState.class));
    verify(beforeStepHook, never()).execute(any(TestCaseState.class));
    verify(afterStepHook, never()).execute(any(TestCaseState.class));
}
Also used : Glue(io.cucumber.core.backend.Glue) RuntimeOptionsBuilder(io.cucumber.core.options.RuntimeOptionsBuilder) StaticHookDefinition(io.cucumber.core.backend.StaticHookDefinition) Collections.singletonList(java.util.Collections.singletonList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List) RuntimeOptions(io.cucumber.core.options.RuntimeOptions) StaticHookDefinition(io.cucumber.core.backend.StaticHookDefinition) HookDefinition(io.cucumber.core.backend.HookDefinition) Test(org.junit.jupiter.api.Test)

Aggregations

Glue (io.cucumber.core.backend.Glue)18 Test (org.junit.jupiter.api.Test)18 List (java.util.List)15 HookDefinition (io.cucumber.core.backend.HookDefinition)14 InOrder (org.mockito.InOrder)12 Collections.emptyList (java.util.Collections.emptyList)10 Collections.singletonList (java.util.Collections.singletonList)10 StaticHookDefinition (io.cucumber.core.backend.StaticHookDefinition)8 ArrayList (java.util.ArrayList)6 Pickle (io.cucumber.core.gherkin.Pickle)5 Backend (io.cucumber.core.backend.Backend)3 ObjectFactory (io.cucumber.core.backend.ObjectFactory)3 TestSnippet (io.cucumber.core.snippets.TestSnippet)3 StubStepDefinition (io.cucumber.core.backend.StubStepDefinition)2 RuntimeOptions (io.cucumber.core.options.RuntimeOptions)2 RuntimeOptionsBuilder (io.cucumber.core.options.RuntimeOptionsBuilder)2 Feature (io.cucumber.core.gherkin.Feature)1 StepDurationTimeService (io.cucumber.core.runner.StepDurationTimeService)1 TestBackendSupplier (io.cucumber.core.runner.TestBackendSupplier)1 ConcurrentEventListener (io.cucumber.plugin.ConcurrentEventListener)1