Title: [1598] trunk/web: tear down selenium after story (alternate to after scenario) + compile fixes

Diff

Modified: trunk/web/pom.xml (1597 => 1598)

--- trunk/web/pom.xml	2010-03-13 15:58:41 UTC (rev 1597)
+++ trunk/web/pom.xml	2010-03-13 18:04:53 UTC (rev 1598)
@@ -16,7 +16,7 @@
   </modules>
 
   <properties>
-    <jbehave.version>2.5-SNAPSHOT</jbehave.version>
+    <jbehave.version>2.6-SNAPSHOT</jbehave.version>
     <jbehave.webapp.name>jbehave-web-runner</jbehave.webapp.name>
   </properties>
 

Modified: trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/controllers/ScenarioController.java (1597 => 1598)

--- trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/controllers/ScenarioController.java	2010-03-13 15:58:41 UTC (rev 1597)
+++ trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/controllers/ScenarioController.java	2010-03-13 18:04:53 UTC (rev 1598)
@@ -1,11 +1,5 @@
 package org.jbehave.web.runner.waffle.controllers;
 
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-import java.util.Properties;
-
 import org.codehaus.waffle.action.annotation.ActionMethod;
 import org.codehaus.waffle.action.annotation.PRG;
 import org.codehaus.waffle.menu.Menu;
@@ -20,6 +14,12 @@
 import org.jbehave.scenario.reporters.ScenarioReporter;
 import org.jbehave.scenario.steps.CandidateSteps;
 
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.Properties;
+
+import static org.apache.commons.lang.StringUtils.isNotBlank;
+
 public class ScenarioController extends MenuAwareController {
 
 	private final ScenarioParser scenarioParser;
@@ -64,7 +64,7 @@
 			try {
 				outputStream.reset();
 				scenarioContext.clearFailureCause();
-				scenarioRunner.run(storyDefinition(), configuration, steps);
+				scenarioRunner.run(storyDefinition(), configuration, true, steps);
 			} catch (Throwable e) {
 				scenarioContext.runFailedFor(e);
 			}

Added: trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerScenarioSteps.java (0 => 1598)

--- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerScenarioSteps.java	                        (rev 0)
+++ trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerScenarioSteps.java	2010-03-13 18:04:53 UTC (rev 1598)
@@ -0,0 +1,37 @@
+package org.jbehave.web.selenium;
+
+import com.thoughtworks.selenium.Selenium;
+import org.jbehave.scenario.annotations.AfterScenario;
+import org.jbehave.scenario.annotations.BeforeScenario;
+import org.jbehave.scenario.steps.StepsConfiguration;
+
+public abstract class SeleniumPerScenarioSteps extends SeleniumSteps {
+
+    public SeleniumPerScenarioSteps() {
+    }
+
+    public SeleniumPerScenarioSteps(StepsConfiguration configuration) {
+        super(configuration);
+    }
+
+    public SeleniumPerScenarioSteps(Selenium selenium) {
+        super(selenium);
+    }
+
+    public SeleniumPerScenarioSteps(SeleniumStepsConfiguration configuration) {
+        super(configuration);
+    }
+
+    @BeforeScenario
+    public void beforeScenario() throws Exception {
+        selenium.start();
+    }
+
+    @AfterScenario
+    public void afterScenario() throws Exception {
+        selenium.close();
+        selenium.stop();
+    }
+
+
+}

Added: trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerStorySteps.java (0 => 1598)

--- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerStorySteps.java	                        (rev 0)
+++ trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumPerStorySteps.java	2010-03-13 18:04:53 UTC (rev 1598)
@@ -0,0 +1,37 @@
+package org.jbehave.web.selenium;
+
+import com.thoughtworks.selenium.Selenium;
+import org.jbehave.scenario.annotations.AfterStory;
+import org.jbehave.scenario.annotations.BeforeStory;
+import org.jbehave.scenario.steps.StepsConfiguration;
+
+public abstract class SeleniumPerStorySteps extends SeleniumSteps {
+
+    public SeleniumPerStorySteps() {
+    }
+
+    public SeleniumPerStorySteps(StepsConfiguration configuration) {
+        super(configuration);
+    }
+
+    public SeleniumPerStorySteps(Selenium selenium) {
+        super(selenium);
+    }
+
+    public SeleniumPerStorySteps(SeleniumStepsConfiguration configuration) {
+        super(configuration);
+    }
+
+    @BeforeStory
+    public void beforeStory() throws Exception {
+        selenium.start();
+    }
+
+    @AfterStory
+    public void afterStory() throws Exception {
+        selenium.close();
+        selenium.stop();
+    }
+
+
+}
\ No newline at end of file

Modified: trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumSteps.java (1597 => 1598)

--- trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumSteps.java	2010-03-13 15:58:41 UTC (rev 1597)
+++ trunk/web/web-selenium/src/main/java/org/jbehave/web/selenium/SeleniumSteps.java	2010-03-13 18:04:53 UTC (rev 1598)
@@ -1,17 +1,14 @@
 package org.jbehave.web.selenium;
 
-import java.util.concurrent.TimeUnit;
-
-import org.jbehave.scenario.annotations.AfterScenario;
-import org.jbehave.scenario.annotations.BeforeScenario;
-import org.jbehave.scenario.steps.Steps;
-import org.jbehave.scenario.steps.StepsConfiguration;
-
 import com.thoughtworks.selenium.DefaultSelenium;
 import com.thoughtworks.selenium.Selenium;
 import com.thoughtworks.selenium.condition.ConditionRunner;
 import com.thoughtworks.selenium.condition.JUnitConditionRunner;
+import org.jbehave.scenario.steps.Steps;
+import org.jbehave.scenario.steps.StepsConfiguration;
 
+import java.util.concurrent.TimeUnit;
+
 /**
  * Steps implementation that can be used in Selenium-based scenarios. It
  * provides annotated methods to start and stop Selenium before and after
@@ -21,7 +18,7 @@
  * 
  * @author Mauro Talevi
  */
-public class SeleniumSteps extends Steps {
+public abstract class SeleniumSteps extends Steps {
 
 	protected final Selenium selenium;
 	protected final ConditionRunner runner;
@@ -46,17 +43,6 @@
 		this.runner = createConditionRunner(selenium);
 	}
 
-	@BeforeScenario
-	public void beforeScenario() throws Exception {
-		selenium.start();
-	}
-
-	@AfterScenario
-	public void afterScenario() throws Exception {
-		selenium.close();
-		selenium.stop();
-	}
-
 	/**
 	 * Creates Selenium used by the Steps, by default {...@link DefaultSelenium}
 	 * using "*firefox" as browser on localhost.

Added: trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerScenarioStepsTest.java (0 => 1598)

--- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerScenarioStepsTest.java	                        (rev 0)
+++ trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerScenarioStepsTest.java	2010-03-13 18:04:53 UTC (rev 1598)
@@ -0,0 +1,97 @@
+package org.jbehave.web.selenium;
+
+import org.jbehave.scenario.Configuration;
+import org.jbehave.scenario.MostUsefulConfiguration;
+import org.jbehave.scenario.ScenarioRunner;
+import org.jbehave.scenario.annotations.Given;
+import org.jbehave.scenario.annotations.Then;
+import org.jbehave.scenario.annotations.When;
+import org.jbehave.scenario.definition.StoryDefinition;
+import org.jbehave.scenario.parser.PatternScenarioParser;
+import org.jbehave.scenario.parser.ScenarioParser;
+import org.jbehave.scenario.steps.Steps;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.junit.Test;
+
+import com.thoughtworks.selenium.Selenium;
+import com.thoughtworks.selenium.condition.ConditionRunner;
+
+public class SeleniumPerScenarioStepsTest {
+
+	private Mockery mockery = new Mockery();
+
+	private static final String NL = "\n";
+
+	private final Configuration configuration = new MostUsefulConfiguration();
+	private final ScenarioParser parser = new PatternScenarioParser();
+	private final ScenarioRunner runner = new ScenarioRunner();
+	private final Selenium selenium = mockery.mock(Selenium.class);
+	private final ConditionRunner conditionRunner = mockery
+			.mock(ConditionRunner.class);
+
+	@Test
+	public void canRunSuccessfulScenario() throws Throwable{
+		String input = "Scenario: A simple web test" + NL
+						+ NL
+						+ "Given a test" + NL
+						+ "When a test is executed" + NL
+						+ "Then a tester is a happy hopper";
+        String path = "/path/to/input";
+		mockery.checking(new Expectations(){{
+			exactly(3).of(selenium).setContext(with(any(String.class)));
+			one(selenium).start();
+			one(selenium).close();
+			one(selenium).stop();
+		}});
+		Steps steps = new MySteps(selenium){
+
+			@Override
+			protected ConditionRunner createConditionRunner(Selenium selenium) {
+				return conditionRunner;
+			}
+
+			@Override
+			protected Selenium createSelenium() {
+				return selenium;
+			}
+			
+		};
+        StoryDefinition definition = parser.defineStoryFrom(input, path);
+        runner.run(definition, configuration, true, steps);
+	}
+
+
+	public static class MySteps extends SeleniumPerScenarioSteps {
+
+        public MySteps() {
+        }
+
+        public MySteps(Selenium selenium) {
+            super(selenium);
+        }
+
+        @Given("a test")
+		public void aTest() {
+		}
+
+		@When("a test is executed")
+		public void aTestIsExecuted() {
+		}
+
+		@When("a test fails")
+		public void aTestFails() {
+			throw new RuntimeException("Test failed");
+		}
+
+		@When("a wait is requested")
+		public void aWaitIsRequested() {
+			waitFor(1);
+		}
+
+		@Then("a tester is a happy hopper")
+		public void aTesterIsHappy() {
+		}
+	};
+
+}

Added: trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerStoryStepsTest.java (0 => 1598)

--- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerStoryStepsTest.java	                        (rev 0)
+++ trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumPerStoryStepsTest.java	2010-03-13 18:04:53 UTC (rev 1598)
@@ -0,0 +1,96 @@
+package org.jbehave.web.selenium;
+
+import com.thoughtworks.selenium.Selenium;
+import com.thoughtworks.selenium.condition.ConditionRunner;
+import org.jbehave.scenario.Configuration;
+import org.jbehave.scenario.MostUsefulConfiguration;
+import org.jbehave.scenario.ScenarioRunner;
+import org.jbehave.scenario.annotations.Given;
+import org.jbehave.scenario.annotations.Then;
+import org.jbehave.scenario.annotations.When;
+import org.jbehave.scenario.definition.StoryDefinition;
+import org.jbehave.scenario.parser.PatternScenarioParser;
+import org.jbehave.scenario.parser.ScenarioParser;
+import org.jbehave.scenario.steps.Steps;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.junit.Test;
+
+public class SeleniumPerStoryStepsTest {
+
+	private Mockery mockery = new Mockery();
+
+	private static final String NL = "\n";
+
+	private final Configuration configuration = new MostUsefulConfiguration();
+	private final ScenarioParser parser = new PatternScenarioParser();
+	private final ScenarioRunner runner = new ScenarioRunner();
+	private final Selenium selenium = mockery.mock(Selenium.class);
+	private final ConditionRunner conditionRunner = mockery
+			.mock(ConditionRunner.class);
+
+	@Test
+	public void canRunSuccessfulScenario() throws Throwable{
+		String input = "Scenario: A simple web test" + NL
+						+ NL
+						+ "Given a test" + NL
+						+ "When a test is executed" + NL
+						+ "Then a tester is a happy hopper";
+        String path = "/path/to/input";
+		mockery.checking(new Expectations(){{
+			exactly(3).of(selenium).setContext(with(any(String.class)));
+			one(selenium).start();
+			one(selenium).close();
+			one(selenium).stop();
+		}});
+		Steps steps = new MySteps(selenium){
+
+			@Override
+			protected ConditionRunner createConditionRunner(Selenium selenium) {
+				return conditionRunner;
+			}
+
+			@Override
+			protected Selenium createSelenium() {
+				return selenium;
+			}
+
+		};
+        StoryDefinition definition = parser.defineStoryFrom(input, path);
+        runner.run(definition, configuration, true, steps);
+	}
+
+
+	public static class MySteps extends SeleniumPerStorySteps {
+
+        public MySteps() {
+        }
+
+        public MySteps(Selenium selenium) {
+            super(selenium);
+        }
+
+        @Given("a test")
+		public void aTest() {
+		}
+
+		@When("a test is executed")
+		public void aTestIsExecuted() {
+		}
+
+		@When("a test fails")
+		public void aTestFails() {
+			throw new RuntimeException("Test failed");
+		}
+
+		@When("a wait is requested")
+		public void aWaitIsRequested() {
+			waitFor(1);
+		}
+
+		@Then("a tester is a happy hopper")
+		public void aTesterIsHappy() {
+		}
+	};
+
+}
\ No newline at end of file

Deleted: trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumStepsTest.java (1597 => 1598)

--- trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumStepsTest.java	2010-03-13 15:58:41 UTC (rev 1597)
+++ trunk/web/web-selenium/src/test/java/org/jbehave/web/selenium/SeleniumStepsTest.java	2010-03-13 18:04:53 UTC (rev 1598)
@@ -1,95 +0,0 @@
-package org.jbehave.web.selenium;
-
-import org.jbehave.scenario.Configuration;
-import org.jbehave.scenario.MostUsefulConfiguration;
-import org.jbehave.scenario.ScenarioRunner;
-import org.jbehave.scenario.annotations.Given;
-import org.jbehave.scenario.annotations.Then;
-import org.jbehave.scenario.annotations.When;
-import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioParser;
-import org.jbehave.scenario.steps.Steps;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.junit.Test;
-
-import com.thoughtworks.selenium.Selenium;
-import com.thoughtworks.selenium.condition.ConditionRunner;
-
-public class SeleniumStepsTest {
-
-	private Mockery mockery = new Mockery();
-
-	private static final String NL = "\n";
-
-	private final Configuration configuration = new MostUsefulConfiguration();
-	private final ScenarioParser parser = new PatternScenarioParser();
-	private final ScenarioRunner runner = new ScenarioRunner();
-	private final Selenium selenium = mockery.mock(Selenium.class);
-	private final ConditionRunner conditionRunner = mockery
-			.mock(ConditionRunner.class);
-
-	@Test
-	public void canRunSuccessfulScenario() throws Throwable{
-		String input = "Scenario: A simple web test" + NL
-						+ NL
-						+ "Given a test" + NL
-						+ "When a test is executed" + NL
-						+ "Then a tester is a happy hopper";
-        String path = "/path/to/input";
-		mockery.checking(new Expectations(){{
-			exactly(3).of(selenium).setContext(with(any(String.class)));
-			one(selenium).start();
-			one(selenium).close();
-			one(selenium).stop();
-		}});
-		Steps steps = new MySteps(selenium){
-
-			@Override
-			protected ConditionRunner createConditionRunner(Selenium selenium) {
-				return conditionRunner;
-			}
-
-			@Override
-			protected Selenium createSelenium() {
-				return selenium;
-			}
-			
-		};
-		runner.run(parser.defineStoryFrom(input, path), configuration, steps);
-	}
-
-
-	public static class MySteps extends SeleniumSteps {
-
-        public MySteps() {
-        }
-
-        public MySteps(Selenium selenium) {
-            super(selenium);
-        }
-
-        @Given("a test")
-		public void aTest() {
-		}
-
-		@When("a test is executed")
-		public void aTestIsExecuted() {
-		}
-
-		@When("a test fails")
-		public void aTestFails() {
-			throw new RuntimeException("Test failed");
-		}
-
-		@When("a wait is requested")
-		public void aWaitIsRequested() {
-			waitFor(1);
-		}
-
-		@Then("a tester is a happy hopper")
-		public void aTesterIsHappy() {
-		}
-	};
-
-}


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to