No, the @After steps behave differently than textual scenario steps. You can configure them to not execute after a failed scenario, but by default they will be executed.
On 25 Sep 2013, at 09:18, Mirko Friedenhagen <[email protected]> wrote: > Hello Mauro, > > I was just trying to reply to Corbin's requirements (maybe I > misunderstood these, though): > - He needs to start a server *before* executing his story and needs to > stop it securely afterwards, so he is asking for a fixture like this: > --- snip --- > startServer(); > try { > checkStoryByRunningJBehave() > } finally { > stopServer(); > } > --- snap --- > - It is my understanding, that when a step fails in JBehave, the > following steps will *not* be executed, so stopServer() would not be > executed. > > Regards > Mirko > > Regards Mirko > -- > http://illegalstateexception.blogspot.com/ > https://github.com/mfriedenhagen/ > https://bitbucket.org/mfriedenhagen/ > > > On Tue, Sep 24, 2013 at 7:26 PM, Mauro Talevi > <[email protected]> wrote: >> Not clear what you're asking. Can you please reformulate and provide an >> example? >> >> On 24 Sep 2013, at 16:42, Mirko Friedenhagen <[email protected]> wrote: >> >>> Hello Mauro, >>> >>> start/stop of the server should probably a fixture. How do you enforce >>> that the step stopping the server is really executed? >>> >>> @Corbin: a really dirty way would be to use the maven-antrun-plugin >>> with two executions and via the java-Task execute the static methods >>> for startup and shutdown during the phases pre-integration-test and >>> post-integration-test (You could do this with two helper classes using >>> the main-method). Something like (of course completely untested) in >>> //project/build/plugins: >>> --- snip --- >>> <plugin> >>> <groupId>org.apache.maven.plugins</groupId> >>> <artifactId>maven-antrun-plugin</artifactId> >>> <version>1.7</version> >>> <executions> >>> <execution> >>> <phase>pre-integration-test</phase> >>> <id>start-my-server</id> >>> <configuration> >>> <target> >>> <property name="maven.test.classpath" >>> - refid="maven.test.classpath" /> >>> <java failonerror="true" fork="true" >>> classpath="${maven.test.classpath}" >>> classname="org.example.ServerStart" >>> /> >>> </target> >>> </configuration> >>> <goals> >>> <goal>run</goal> >>> </goals> >>> </execution> >>> <execution> >>> <phase>post-integration-test</phase> >>> <id>stop-my-server</id> >>> <configuration> >>> <target> >>> <property name="maven.test.classpath" >>> - refid="maven.test.classpath" /> >>> <java failonerror="true" fork="true" >>> classpath="${maven.test.classpath}" >>> classname="org.example.ServerStop" >>> /> >>> </target> >>> </configuration> >>> <goals> >>> <goal>run</goal> >>> </goals> >>> </execution> >>> </executions> >>> </plugin> >>> --- snap --- >>> Now you should tell jbehave *not* to fail otherwise >>> post-integration-test will not be run. >>> >>> Regards >>> Mirko >>> Regards Mirko >>> -- >>> http://illegalstateexception.blogspot.com/ >>> https://github.com/mfriedenhagen/ >>> https://bitbucket.org/mfriedenhagen/ >>> >>> >>> On Tue, Sep 24, 2013 at 4:45 PM, Mauro Talevi >>> <[email protected]> wrote: >>>> What's wrong with a dedicated steps class for the start/stop operations? >>>> They are annotated methods, and thus steps, just as well. >>>> >>>> The JUnitStories class is only meant to configure and execute stories, not >>>> to hold executable methods. It also provides the hook for IDEs which >>>> support JUnit. >>>> >>>> The Maven plugin knows nothing of JUnit and its annotations. If you're >>>> trying to go down this route you're likely to hit a brick wall. >>>> >>>> Cheers >>>> >>>> On 24 Sep 2013, at 15:18, "Corbin, J.D." <[email protected]> wrote: >>>> >>>> As it turns out, we don't. We are starting and stopping a server that is >>>> required by our BDD scenarios and didn't want to put that logic in any step >>>> classes. The logical place to manage the starting and stopping of the >>>> server, we believed, was in our class that extends JUnitStories. We had >>>> hoped there were some annotated lifecycle methods we could use for this, >>>> and >>>> in fact did find that the JUnit @BeforeClass and @AfterClass methods worked >>>> but only when you run the JUnitStories derived class as JUnit. I couldn't >>>> figure out how to configure the JBEHAVE-MAVEN-PLUGIN to run the class as a >>>> JUnit like we do in Eclipse. >>>> >>>> For now, we can construct and start the server in the constructor of the >>>> aforementioned class. THe shutdown of the server will happen when the JVM >>>> goes away. This is not ideal but will work for us. >>>> >>>> So, we could use the JUnit specific annotations if we could get them to >>>> execute when running our JUnitStories class via the maven plugin. >>>> >>>> >>>> >>>> >>>> On Mon, Sep 23, 2013 at 4:50 PM, Mauro Talevi <[email protected]> >>>> wrote: >>>>> >>>>> Why do need to put the before/after methods in Embeddable class and not in >>>>> a steps class? >>>>> >>>>> On 23 Sep 2013, at 22:39, "Corbin, J.D." <[email protected]> wrote: >>>>> >>>>> Hi, that does work for an InstanceStepsFactory, but we are using a >>>>> GuiceStepsFactory. I'll have to see if there is a way to extend this >>>>> factory to support this. >>>>> >>>>> >>>>> >>>>> On Mon, Sep 23, 2013 at 3:29 PM, Mauro Talevi <[email protected]> >>>>> wrote: >>>>>> >>>>>> The JBehave lifecycle annotations must found in the steps classes. That >>>>>> said, you can register your class as a steps class. Just pass the >>>>>> "this" >>>>>> reference to the InstanceStepsFactory. >>>>>> >>>>>> On 23 Sep 2013, at 21:35, "Corbin, J.D." <[email protected]> wrote: >>>>>> >>>>>> I have a class that extends JUnitStories and specifies two methods that >>>>>> use the JUnit specific annotations @BeforeClass @AfterClass. Inside of >>>>>> these methods I do some initialization for my test scenarios, like >>>>>> propping >>>>>> up a test server. So the BeforeClass method starts the server and the >>>>>> AfterClass method shuts down the server. >>>>>> >>>>>> When I run the class that extends JUnitStories as a JUnit test, it >>>>>> executes the methods annotated with the beforeclass and afterclass just >>>>>> as >>>>>> you might expect. All scenarios execute and succeed when running in this >>>>>> manner. >>>>>> >>>>>> Now, when I run using maven (command line) and the jbehave-maven-plugin, >>>>>> the JUnit (not really surprising) specific annotations are not executed >>>>>> and >>>>>> therefore my server startup and shutdown logic is bypassed which >>>>>> prevents my >>>>>> scenarios from executing. >>>>>> >>>>>> How can I run the JBehave scenarios from the command line using Maven >>>>>> such that my JUnit (or JBehave specific) annotated methods get executed? >>>>>> >>>>>> I have tried using JBehave specific annotations like @BeforeStories, >>>>>> @AfterStories,@BeforeTest, and @AfterTest (as well) in my class that >>>>>> extends >>>>>> JUnitStories, but none of the methods with these annotations ever get >>>>>> executed, either when running in Eclipse (as JUnit), nor Maven. >>>>>> >>>>>> Any suggestions would greatly be appreciated. >>> >>> --------------------------------------------------------------------- >>> To unsubscribe from this list, please visit: >>> >>> http://xircles.codehaus.org/manage_email >> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
