use of io.cucumber.core.backend.ObjectFactory in project cucumber-jvm by cucumber.
the class HookTest method hook_throws_exception_with_name_when_tag_expression_is_invalid.
@Test
void hook_throws_exception_with_name_when_tag_expression_is_invalid() {
Backend backend = mock(Backend.class);
when(backend.getSnippet()).thenReturn(new TestSnippet());
ObjectFactory objectFactory = mock(ObjectFactory.class);
final HookDefinition hook = mock(HookDefinition.class);
when(hook.getLocation()).thenReturn("hook-location");
when(hook.getTagExpression()).thenReturn("(");
doAnswer(invocation -> {
Glue glue = invocation.getArgument(0);
glue.addBeforeHook(hook);
return null;
}).when(backend).loadGlue(any(Glue.class), ArgumentMatchers.anyList());
RuntimeException e = assertThrows(RuntimeException.class, () -> new Runner(bus, Collections.singleton(backend), objectFactory, runtimeOptions));
assertThat(e.getMessage(), is("Invalid tag expression at 'hook-location'"));
}
use of io.cucumber.core.backend.ObjectFactory in project cucumber-jvm by cucumber.
the class RunnerTest method hooks_execute_inside_world_and_around_world.
@Test
void hooks_execute_inside_world_and_around_world() {
StaticHookDefinition beforeAllHook = createStaticHook();
StaticHookDefinition afterAllHook = createStaticHook();
HookDefinition beforeHook = createHook();
HookDefinition afterHook = createHook();
Backend backend = mock(Backend.class);
when(backend.getSnippet()).thenReturn(new TestSnippet());
ObjectFactory objectFactory = mock(ObjectFactory.class);
doAnswer(invocation -> {
Glue glue = invocation.getArgument(0);
glue.addBeforeAllHook(beforeAllHook);
glue.addAfterAllHook(afterAllHook);
glue.addBeforeHook(beforeHook);
glue.addAfterHook(afterHook);
return null;
}).when(backend).loadGlue(any(Glue.class), ArgumentMatchers.anyList());
Runner runner = new Runner(bus, singletonList(backend), objectFactory, runtimeOptions);
runner.runBeforeAllHooks();
runner.runPickle(createPicklesWithSteps());
runner.runAfterAllHooks();
InOrder inOrder = inOrder(beforeAllHook, afterAllHook, beforeHook, afterHook, backend);
inOrder.verify(beforeAllHook).execute();
inOrder.verify(backend).buildWorld();
inOrder.verify(beforeHook).execute(any(TestCaseState.class));
inOrder.verify(afterHook).execute(any(TestCaseState.class));
inOrder.verify(backend).disposeWorld();
inOrder.verify(afterAllHook).execute();
}
use of io.cucumber.core.backend.ObjectFactory in project cucumber-jvm by cucumber.
the class RunnerTest method backends_are_asked_for_snippets_for_undefined_steps.
@Test
void backends_are_asked_for_snippets_for_undefined_steps() {
Backend backend = mock(Backend.class);
when(backend.getSnippet()).thenReturn(new TestSnippet());
ObjectFactory objectFactory = mock(ObjectFactory.class);
Runner runner = new Runner(bus, singletonList(backend), objectFactory, runtimeOptions);
runner.runPickle(createPicklesWithSteps());
verify(backend).getSnippet();
}
use of io.cucumber.core.backend.ObjectFactory in project cucumber-jvm by cucumber.
the class SpringFactoryTest method shouldThrowWhenGlueScopedSpringBeanAreUsedOutsideLifecycle.
@Test
void shouldThrowWhenGlueScopedSpringBeanAreUsedOutsideLifecycle() {
final ObjectFactory factory = new SpringFactory();
factory.addClass(WithSpringAnnotations.class);
factory.start();
final Belly belly = factory.getInstance(Belly.class);
final GlueScopedComponent glue = factory.getInstance(GlueScopedComponent.class);
factory.stop();
assertDoesNotThrow(belly::getInstanceId);
assertThrows(BeanCreationException.class, glue::getInstanceId);
}
use of io.cucumber.core.backend.ObjectFactory in project cucumber-jvm by cucumber.
the class SpringFactoryTest method shouldGiveUsNewStepInstancesForEachScenario.
@Test
void shouldGiveUsNewStepInstancesForEachScenario() {
final ObjectFactory factory = new SpringFactory();
factory.addClass(BellyStepDefinitions.class);
// Scenario 1
factory.start();
final BellyStepDefinitions o1 = factory.getInstance(BellyStepDefinitions.class);
factory.stop();
// Scenario 2
factory.start();
final BellyStepDefinitions o2 = factory.getInstance(BellyStepDefinitions.class);
factory.stop();
assertAll(() -> assertThat(o1, is(notNullValue())), () -> assertThat(o2, is(notNullValue())), () -> assertThat(o1, is(not(equalTo(o2)))), () -> assertThat(o2, is(not(equalTo(o1)))));
}
Aggregations