Title: [931] trunk/jbehave-core/src/java/org/jbehave/scenario: JBEHAVE-132: Pulled up Scenario interface

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:

http://xircles.codehaus.org/manage_email

Reply via email to