Carlus,

Look at Spring's
org.springframework.test.context.transaction.TransactionalTestExe
cutionListener
I'm not sure that you need to do the @BeforeTransaction / @AfterTransactio
n logic - perhaps
you would - but that code should be the basis of your code - the beforeTes
tMethod and
afterTestMethod should be like BeforeScenario and AfterScenario.

I'm assuming that you'll always rollback.

In terms of the resource setup strategy - I get that that might be a limit
ation - but you
shouldn't be running tests against real data - how can you guarentee your
regression testing
isn't failing based on bad data?  The use of another database - setup from
 scratch however
you do that - is highly recommended for acceptance testing.  That's why Db
FIT is so popular
for FIT testing.

B

----- Original message -----

From: "Carlus Henry" <[email protected]>
To: [email protected]
Date: Mon, 3 Jan 2011 14:32:05 -0500
Subject: Re: [jbehave-user] JBehave and Spring Transactions...

Thank you Brian and Mauro,

With your suggestions, I think that I am closer than I was
before.  I now have my story running within a single Spring Test
that automatically roll backs the transaction after the story has
completed.  However, as Brian alluded to, I would like for the
transaction to rollback after every scenario, so that the changes
to my persistent store do not impact other scenarios in the same
story.  Any specifics that you would provide regarding how to
control the transaction rollback in the Before and
AfterScenario's would be greatly appreciated

Brian, I would love it if I could adjust my resource setup
strategy, but unfortunately I don't think that is going to be an
option at the company I am working at.

Thanks again for all of your help thus far...
On Mon, Jan 3, 2011 at 7:44 AM, Brian Repko
<[1][email protected]> wrote:


Carlus,

You may also want to look at the Spring Security example.

If you are calling into your services during your steps, then you
need to create a Spring
Transaction in a BeforeScenario and then rollback in the
AfterScenario.  And your services
cannot use REQUIRES_NEW.  This can be quite tricky to do for
integration/acceptance
tests as you are really mimicing a client of the software - be it
at the service level or at the
UI level (Selenium for web apps).  The acceptance test covers
multiple "transactions" and
if that was all one transaction you might find problems with
timeouts as well.

Rather than using a transactional rollback strategy, you might
look at a resource setup
strategy. In the Spring Security example, you'll see that the
database (hsqldb) is created
with the the construction of the application context.  You'll
also see the use of dbunit in
a Before and AfterScenario to wipe out all the data.

Brian


----- Original message -----
From: "Carlus Henry" <[2][email protected]>
To: [3][email protected]
Date: Sun, 2 Jan 2011 15:59:11 -0500
Subject: [jbehave-user] JBehave and Spring Transactions...

Good afternoon,

I am in the process of evaluating JBehave as our BDD testing
framework.  I am really enjoying the features and functionality
that it provides, however, I am a little puzzled about something
and I am hoping that you would be able to help.

Currently, most of our tests are using JUnit 3 and extends
Spring's AbstractJpaTests, which rolls back transactions
auto-"magically".  What I would like to do is create integration
tests using JBehave and have anything that I do to the database
rollback, after each scenario.  I had a discussion with some
folks at work and we were coming up with all kinds of different
ways of potentially making this work.  (Including using JUnit 4,
and a combination of the following annotations @Transactional,
@BeforeScenario, @AfterScenario).  I did try it, but it didn't
quite work out.

After scouring your mailing list and looking online, I did not
find anything that was extremely helpful with this predicament.
This is a batch application and not a web application.  Any
advice you can offer would be great.

Thanks
Carlus
---
Brian Repko
[4]LearnThinkCode, Inc.
email: [5][email protected]
phone: +1 612 229 6779

--
Carlus Henry
SageTech L.L.C.
616.558.4536 cell
[6]www.sagetech-llc.com | [7]http://jdcarlflip.blogspot.com/

References

1. mailto:[email protected]
2. mailto:[email protected]
3. mailto:[email protected]
4. http://www.learnthinkcode.com/
5. mailto:[email protected]
6. http://www.sagetech-llc.com/
7. http://jdcarlflip.blogspot.com/
---
Brian Repko
LearnThinkCode, Inc.
http://www.learnthinkcode.com
email: [email protected]
phone: +1 612 229 6779

Reply via email to