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


Reply via email to