- Revision
- 931
- Author
- mauro
- Date
- 2008-09-19 05:27:02 -0500 (Fri, 19 Sep 2008)
Log Message
JBEHAVE-132: Pulled up Scenario interface
Modified Paths
- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java
- trunk/jbehave-core/src/java/org/jbehave/scenario/JUnitScenario.java
- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java
- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java
- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefiner.java
- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java
- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java
- trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/AbstractScenarioMojo.java
- trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioClassLoader.java
- trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioRunnerMojo.java
Added Paths
Diff
Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java (930 => 931)
--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java 2008-09-19 10:27:02 UTC (rev 931) @@ -29,12 +29,12 @@ ScenarioRunner runner = mock(ScenarioRunner.class); MockedConfiguration configuration = new MockedConfiguration(); Steps steps = mock(Steps.class); - JUnitScenario scenario = new MyScenario(runner, configuration, steps); + Scenario scenario = new MyScenario(runner, configuration, steps); StoryDefinition storyDefinition = new StoryDefinition(Blurb.EMPTY, Collections.EMPTY_LIST); stub(configuration.scenarioDefiner.loadScenarioDefinitionsFor(MyScenario.class)).toReturn(storyDefinition); - scenario.testRun(); + scenario.runScenario(); verify(runner).run(storyDefinition, configuration, steps); }
Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/JUnitScenario.java (930 => 931)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/JUnitScenario.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/JUnitScenario.java 2008-09-19 10:27:02 UTC (rev 931) @@ -10,6 +10,11 @@ /** * <p> + * <a href="" implementation of Scenario. Both + * JUnit 4.x (via @Test annotation) and JUnit 3.8.x (via TestCase inheritance) + * are supported. + * </p> + * <p> * Extend this class to run your scenario. Call the class after your scenario, * eg: "ICanLogin.java". * </p> @@ -27,7 +32,7 @@ * Then move on to extending the Steps class. * </p> */ -public abstract class JUnitScenario extends TestCase { +public abstract class JUnitScenario extends TestCase implements Scenario { private final Configuration configuration; private final ScenarioRunner scenarioRunner; @@ -48,8 +53,12 @@ } @Test - public void testRun() throws Throwable { + public void runScenario() throws Throwable { StoryDefinition story = configuration.forDefiningScenarios().loadScenarioDefinitionsFor(this.getClass()); scenarioRunner.run(story, configuration, candidateSteps); } + + public void testRun() throws Throwable { + runScenario(); + } }
Added: trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java (0 => 931)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java (rev 0) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java 2008-09-19 10:27:02 UTC (rev 931) @@ -0,0 +1,32 @@ +package org.jbehave.scenario; + +import org.jbehave.scenario.definition.KeyWords; +import org.jbehave.scenario.parser.ScenarioNameResolver; + +/** + * <p> + * Scenario represents the main interface to run a scenario. + * </p> + * <p> + * Extend the implementation that uses the test framework of your choice, eg + * JUnitScenario, and call the class after your scenario, eg: "ICanLogin.java". + * </p> + * <p> + * Your Scenario class should be in a matching text file in the same place, eg + * "i_can_login". The scenario name used can be configured via the + * [EMAIL PROTECTED] ScenarioNameResolver}. + * </p> + * <p> + * Write some steps in your text scenario, starting each new step with Given, + * When, Then or And. The keywords can be configured via the [EMAIL PROTECTED] KeyWords} + * class, eg they can be translated/localized to other languages. + * </p> + * <p> + * Then move on to extending the Steps class. + * </p> + */ +public interface Scenario { + + void runScenario() throws Throwable; + +}
Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java (930 => 931)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java 2008-09-19 10:27:02 UTC (rev 931) @@ -1,6 +1,6 @@ package org.jbehave.scenario.parser; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; /** * <p> @@ -23,7 +23,7 @@ this.extension = extension; } - public String resolve(Class<? extends JUnitScenario> scenarioClass) { + public String resolve(Class<? extends Scenario> scenarioClass) { String packageDir = scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH); return packageDir + SLASH + scenarioClass.getSimpleName() + extension; }
Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java (930 => 931)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java 2008-09-19 10:27:02 UTC (rev 931) @@ -4,7 +4,7 @@ import java.io.IOException; import java.io.InputStream; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; import org.jbehave.scenario.definition.StoryDefinition; import org.jbehave.scenario.errors.InvalidScenarioResourceException; import org.jbehave.scenario.errors.ScenarioNotFoundException; @@ -43,12 +43,12 @@ this.classLoader = classLoader; } - public StoryDefinition loadScenarioDefinitionsFor(Class<? extends JUnitScenario> scenarioClass) { + public StoryDefinition loadScenarioDefinitionsFor(Class<? extends Scenario> scenarioClass) { String wholeFileAsString = asString(loadInputStreamFor(scenarioClass)); return parser.defineStoryFrom(wholeFileAsString); } - private InputStream loadInputStreamFor(Class<? extends JUnitScenario> scenarioClass) { + private InputStream loadInputStreamFor(Class<? extends Scenario> scenarioClass) { String scenarioName = resolver.resolve(scenarioClass); InputStream stream = classLoader.getResourceAsStream(scenarioName); if (stream == null) {
Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefiner.java (930 => 931)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefiner.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefiner.java 2008-09-19 10:27:02 UTC (rev 931) @@ -1,6 +1,6 @@ package org.jbehave.scenario.parser; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; import org.jbehave.scenario.definition.StoryDefinition; /** @@ -10,6 +10,6 @@ */ public interface ScenarioDefiner { - StoryDefinition loadScenarioDefinitionsFor(Class<? extends JUnitScenario> scenarioClass); + StoryDefinition loadScenarioDefinitionsFor(Class<? extends Scenario> scenarioClass); }
Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java (930 => 931)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java 2008-09-19 10:27:02 UTC (rev 931) @@ -1,6 +1,6 @@ package org.jbehave.scenario.parser; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; /** * <p> @@ -10,6 +10,6 @@ */ public interface ScenarioNameResolver { - String resolve(Class<? extends JUnitScenario> scenarioClass); + String resolve(Class<? extends Scenario> scenarioClass); }
Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java (930 => 931)
--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java 2008-09-19 10:27:02 UTC (rev 931) @@ -3,7 +3,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; /** * <p> @@ -32,7 +32,7 @@ this.extension = extension; } - public String resolve(Class<? extends JUnitScenario> scenarioClass) { + public String resolve(Class<? extends Scenario> scenarioClass) { String packageDir = scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH); Matcher matcher = Pattern.compile(PATTERN).matcher(scenarioClass.getSimpleName()); int startAt = 0;
Modified: trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/AbstractScenarioMojo.java (930 => 931)
--- trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/AbstractScenarioMojo.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/AbstractScenarioMojo.java 2008-09-19 10:27:02 UTC (rev 931) @@ -6,7 +6,7 @@ import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; import org.jbehave.scenario.parser.ScenarioClassNameFinder; /** @@ -133,7 +133,7 @@ * @return A List of Scenarios * @throws MojoExecutionException */ - protected List<JUnitScenario> scenarios() throws MojoExecutionException { + protected List<Scenario> scenarios() throws MojoExecutionException { List<String> names = scenarioClassNames; if (names == null || names.isEmpty()) { names = findScenarioClassNames(); @@ -143,7 +143,7 @@ } try { ScenarioClassLoader classLoader = createScenarioClassLoader(); - List<JUnitScenario> scenarios = new ArrayList<JUnitScenario>(); + List<Scenario> scenarios = new ArrayList<Scenario>(); for (String name : names) { scenarios.add(classLoader.newScenario(name)); }
Modified: trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioClassLoader.java (930 => 931)
--- trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioClassLoader.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioClassLoader.java 2008-09-19 10:27:02 UTC (rev 931) @@ -7,7 +7,7 @@ import java.util.ArrayList; import java.util.List; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; /** * Extends URLClassLoader to instantiate Scenarios. @@ -17,7 +17,7 @@ public class ScenarioClassLoader extends URLClassLoader { public ScenarioClassLoader(List<String> classpathElements) throws MalformedURLException { - super(classpathURLs(classpathElements), JUnitScenario.class.getClassLoader()); + super(classpathURLs(classpathElements), Scenario.class.getClassLoader()); } public ScenarioClassLoader(List<String> classpathElements, ClassLoader parent) throws MalformedURLException { @@ -30,14 +30,14 @@ * @param scenarioClassName the name of the Scenario class * @return A Scenario instance */ - public JUnitScenario newScenario(String scenarioClassName) { + public Scenario newScenario(String scenarioClassName) { try { - JUnitScenario scenario = (JUnitScenario) loadClass(scenarioClassName).getConstructor(ClassLoader.class).newInstance( + Scenario scenario = (Scenario) loadClass(scenarioClassName).getConstructor(ClassLoader.class).newInstance( this); Thread.currentThread().setContextClassLoader(this); return scenario; } catch (ClassCastException e) { - String message = "The scenario '" + scenarioClassName + "' must be of type '" + JUnitScenario.class.getName() +"'"; + String message = "The scenario '" + scenarioClassName + "' must be of type '" + Scenario.class.getName() +"'"; throw new RuntimeException(message, e); } catch (Exception e) { String message = "The Scenario '" + scenarioClassName
Modified: trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioRunnerMojo.java (930 => 931)
--- trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioRunnerMojo.java 2008-09-19 09:49:42 UTC (rev 930) +++ trunk/jbehave-maven-plugin/src/main/java/org/jbehave/mojo/ScenarioRunnerMojo.java 2008-09-19 10:27:02 UTC (rev 931) @@ -2,7 +2,7 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; -import org.jbehave.scenario.JUnitScenario; +import org.jbehave.scenario.Scenario; /** * Mojo to run scenarios @@ -13,10 +13,10 @@ public class ScenarioRunnerMojo extends AbstractScenarioMojo { public void execute() throws MojoExecutionException, MojoFailureException { - for (JUnitScenario scenario : scenarios()) { + for (Scenario scenario : scenarios()) { try { getLog().info("Running scenario " + scenario.getClass().getName()); - scenario.run(); + scenario.runScenario(); } catch (Throwable e) { throw new MojoExecutionException("Failed to run scenario " + scenario.getClass().getName(), e); }
To unsubscribe from this list please visit:
