- Revision
- 1584
- Author
- mauro
- Date
- 2010-02-25 02:55:29 -0600 (Thu, 25 Feb 2010)
Log Message
JBEHAVE-239: Fixed running embedded story steps.
Modified Paths
Diff
Modified: trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/ScenarioRunnerBehaviour.java (1583 => 1584)
--- trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/ScenarioRunnerBehaviour.java 2010-02-25 08:01:34 UTC (rev 1583) +++ trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/ScenarioRunnerBehaviour.java 2010-02-25 08:55:29 UTC (rev 1584) @@ -300,8 +300,9 @@ } private void givenStoryWithNoBeforeOrAfterSteps(StoryDefinition storyDefinition, boolean embeddedStory, StepCreator creator, CandidateSteps mySteps) { - when(creator.createStepsFrom(storyDefinition, Stage.BEFORE, embeddedStory, mySteps)).thenReturn(new Step[] {}); - when(creator.createStepsFrom(storyDefinition, Stage.AFTER, embeddedStory, mySteps)).thenReturn(new Step[] {}); + Step[] steps = new Step[] {}; + when(creator.createStepsFrom(storyDefinition, Stage.BEFORE, embeddedStory, mySteps)).thenReturn(steps); + when(creator.createStepsFrom(storyDefinition, Stage.AFTER, embeddedStory, mySteps)).thenReturn(steps); } private Configuration configurationWithPendingStrategy(StepCreator creator, ScenarioReporter reporter,
Modified: trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/ScenarioRunner.java (1583 => 1584)
--- trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/ScenarioRunner.java 2010-02-25 08:01:34 UTC (rev 1583) +++ trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/ScenarioRunner.java 2010-02-25 08:55:29 UTC (rev 1584) @@ -16,6 +16,7 @@ import org.jbehave.scenario.steps.Step; import org.jbehave.scenario.steps.StepCreator; import org.jbehave.scenario.steps.StepResult; +import org.jbehave.scenario.steps.StepCreator.Stage; /** * Runs the steps of each scenario in a story and describes the results to the {...@link ScenarioReporter}. @@ -56,38 +57,22 @@ throwable = null; reporter.beforeStory(story, embeddedStory); - runSteps(stepCreator.createStepsFrom(story, StepCreator.Stage.BEFORE, embeddedStory, candidateSteps), embeddedStory); + runStorySteps(story, embeddedStory, StepCreator.Stage.BEFORE, candidateSteps); for (ScenarioDefinition scenario : story.getScenarios()) { reporter.beforeScenario(scenario.getTitle()); runGivenScenarios(configuration, scenario, candidateSteps); // first run any given scenarios, if any if ( isExamplesTableScenario(scenario) ){ // run examples table scenario runExamplesTableScenario(configuration, scenario, candidateSteps); } else { // run plain old scenario - runScenario(configuration, scenario, new HashMap<String, String>(), candidateSteps); + runScenarioSteps(configuration, scenario, new HashMap<String, String>(), candidateSteps); } reporter.afterScenario(); } - runSteps(stepCreator.createStepsFrom(story, StepCreator.Stage.AFTER, embeddedStory, candidateSteps), embeddedStory); + runStorySteps(story, embeddedStory, StepCreator.Stage.AFTER, candidateSteps); reporter.afterStory(embeddedStory); currentStrategy.handleError(throwable); } - - /** - * Runs a list of steps. The running can be skipped in certain cases, - * e.g. when running in embedded story mode. - * - * @param steps the Steps to run - * @param skip the boolean flag to skip running - */ - private void runSteps(Step[] steps, boolean skip) { - if ( skip ) return; - state = new FineSoFar(); - for (Step step : steps) { - state.run(step); - } - } - private void runGivenScenarios(Configuration configuration, ScenarioDefinition scenario, CandidateSteps... candidateSteps) throws Throwable { @@ -112,17 +97,35 @@ reporter.beforeExamples(scenario.getSteps(), table); for (Map<String,String> tableRow : table.getRows() ) { reporter.example(tableRow); - runScenario(configuration, scenario, tableRow, candidateSteps); + runScenarioSteps(configuration, scenario, tableRow, candidateSteps); } reporter.afterExamples(); } - private void runScenario(Configuration configuration, + private void runStorySteps(StoryDefinition story, boolean embeddedStory, Stage stage, CandidateSteps... candidateSteps) { + Step[] steps = stepCreator.createStepsFrom(story, stage, embeddedStory, candidateSteps); + runSteps(steps); + } + + private void runScenarioSteps(Configuration configuration, ScenarioDefinition scenario, Map<String, String> tableRow, CandidateSteps... candidateSteps) { Step[] steps = stepCreator.createStepsFrom(scenario, tableRow, candidateSteps); - runSteps(steps, false); - }; + runSteps(steps); + } + /** + * Runs a list of steps. + * + * @param steps the Steps to run + */ + private void runSteps(Step[] steps) { + if ( steps == null || steps.length == 0 ) return; + state = new FineSoFar(); + for (Step step : steps) { + state.run(step); + } + } + private class SomethingHappened implements State { public void run(Step step) { StepResult result = step.doNotPerform();
To unsubscribe from this list please visit:
