package org.jbehave.examples.core.annotations; import java.text.SimpleDateFormat; import java.util.List; import java.util.Properties; import org.jbehave.core.InjectableEmbedder; import org.jbehave.core.annotations.Configure; import org.jbehave.core.annotations.UsingEmbedder; import org.jbehave.core.annotations.UsingSteps; import org.jbehave.core.embedder.Embedder; import org.jbehave.core.embedder.StoryControls; import org.jbehave.core.io.LoadFromClasspath; import org.jbehave.core.io.StoryFinder; import org.jbehave.core.junit.AnnotatedEmbedderRunner; import org.jbehave.core.parsers.RegexPrefixCapturingPatternParser; import org.jbehave.core.reporters.StoryReporterBuilder; import org.jbehave.core.steps.ParameterConverters.DateConverter; import org.jbehave.examples.core.annotations.CoreAnnotatedEmbedder.MyDateConverter; import org.jbehave.examples.core.annotations.CoreAnnotatedEmbedder.MyEmbedder; import org.jbehave.examples.core.annotations.CoreAnnotatedEmbedder.MyRegexPrefixCapturingPatternParser; import org.jbehave.examples.core.annotations.CoreAnnotatedEmbedder.MyReportBuilder; import org.jbehave.examples.core.annotations.CoreAnnotatedEmbedder.MyStoryControls; import org.jbehave.examples.core.annotations.CoreAnnotatedEmbedder.MyStoryLoader; import org.jbehave.examples.core.steps.AndSteps; import org.jbehave.examples.core.steps.BeforeAfterSteps; import org.jbehave.examples.core.steps.CalendarSteps; import org.jbehave.examples.core.steps.PriorityMatchingSteps; import org.jbehave.examples.core.steps.SandpitSteps; import org.jbehave.examples.core.steps.SearchSteps; import org.jbehave.examples.core.steps.TraderSteps; import org.junit.Test; import org.junit.runner.RunWith; import static org.jbehave.core.io.CodeLocations.codeLocationFromPath; import static org.jbehave.core.reporters.Format.CONSOLE; import static org.jbehave.core.reporters.Format.HTML; import static org.jbehave.core.reporters.Format.TXT; import static org.jbehave.core.reporters.Format.XML; @RunWith(AnnotatedEmbedderRunner.class) @Configure(stepPatternParser = MyRegexPrefixCapturingPatternParser.class, storyControls = MyStoryControls.class, storyLoader = MyStoryLoader.class, storyReporterBuilder = MyReportBuilder.class, parameterConverters = { MyDateConverter.class }) @UsingEmbedder(embedder = MyEmbedder.class, generateViewAfterStories = true, ignoreFailureInStories = true, ignoreFailureInView = true, verboseFailures = true, verboseFiltering = true, storyTimeouts = "100", threads = 1, metaFilters = "-skip") @UsingSteps(instances = { TraderSteps.class, BeforeAfterSteps.class, AndSteps.class, CalendarSteps.class, PriorityMatchingSteps.class, SandpitSteps.class, SearchSteps.class }) public class CoreAnnotatedEmbedder extends InjectableEmbedder { @Test public void run() { List<String> storyPaths = new StoryFinder().findPaths(codeLocationFromPath("../core/src/main/java"), "**/*.story", "**/examples_table_loaded*"); injectedEmbedder().runStoriesAsPaths(storyPaths); } public static class MyEmbedder extends Embedder { public MyEmbedder() { Properties properties = new Properties(); properties.setProperty("project.dir", System.getProperty("project.dir", "N/A")); useSystemProperties(properties); } } public static class MyStoryControls extends StoryControls { public MyStoryControls() { doDryRun(false); doSkipScenariosAfterFailure(false); } } public static class MyStoryLoader extends LoadFromClasspath { public MyStoryLoader() { super(CoreAnnotatedEmbedder.class.getClassLoader()); } } public static class MyReportBuilder extends StoryReporterBuilder { public MyReportBuilder() { this.withFormats(CONSOLE, TXT, HTML, XML).withDefaultFormats(); } } public static class MyRegexPrefixCapturingPatternParser extends RegexPrefixCapturingPatternParser { public MyRegexPrefixCapturingPatternParser() { super("%"); } } public static class MyDateConverter extends DateConverter { public MyDateConverter() { super(new SimpleDateFormat("yyyy-MM-dd")); } } }