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