Hi Mirko, I thing you should drive the execution flow with maven and not jbehave so that starting server, stopping server and executing jbehave is bound to maven lifecycle respectively pre-integration-test, post-integration-test and integration-test.
There are many resource on the web explaining how to do that. This<http://deepintojee.wordpress.com/2011/11/24/testing-rest-content-negotiation-with-jersey-and-jbehave/> is one version on my blog Hope this helps. Cordialement/Regards, Louis GUEYE linkedin <http://fr.linkedin.com/in/louisgueye> | blog<http://deepintojee.wordpress.com/>| twitter <http://twitter.com/#%21/lgueye> 2013/9/25 Mirko Friedenhagen <[email protected]> > 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 > > >
