package org.jbehave.core.junit.needle; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertTrue; import java.util.List; import javax.inject.Inject; import org.jbehave.core.InjectableEmbedder; import org.jbehave.core.annotations.Configure; import org.jbehave.core.annotations.Given; import org.jbehave.core.annotations.UsingEmbedder; import org.jbehave.core.annotations.UsingSteps; import org.jbehave.core.annotations.needle.NeedleInjectionProvider; import org.jbehave.core.annotations.needle.UsingNeedle; import org.jbehave.core.configuration.needle.NeedleAnnotationBuilder; import org.jbehave.core.configuration.needle.ValueGetterProvider; import org.jbehave.core.junit.AnnotatedEmbedderRunner; import org.jbehave.core.steps.CandidateSteps; import org.jbehave.core.steps.needle.ValueGetter; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.model.InitializationError; import org.needle4j.injection.InjectionProvider; public class NeedleAnnotatedEmbedderRunnerBehaviour { @Test public void shouldCreateWithGuiceAnnotatedBuilder() throws InitializationError { AnnotatedEmbedderRunner runner = new NeedleAnnotatedEmbedderRunner(RunningWithAnnotatedEmbedderRunner.class); assertThat(runner.annotationBuilder(), instanceOf(NeedleAnnotationBuilder.class)); } @RunWith(NeedleAnnotatedEmbedderRunner.class) @Configure() @UsingSteps(instances = Steps.class) @UsingEmbedder() @UsingNeedle public static class RunningWithAnnotatedEmbedderRunner extends InjectableEmbedder { @Test public void run() { assertTrue(true); } @Test public void testSteps() { final List<CandidateSteps> candidateSteps = injectedEmbedder().stepsFactory().createCandidateSteps(); assertThat(candidateSteps.size(), is(1)); } } public static class Steps { @NeedleInjectionProvider InjectionProvider<ValueGetter> provider = new ValueGetterProvider(); @Inject private ValueGetter getter; @Given("Some") public boolean complete() { return ValueGetter.VALUE.equals(getter.getValue()); } } }