These are difficult questions to answer in an email, but I'll share a little about what we do and maybe that will help out a bit.

Jeffery Painter wrote:
I am trying to create unit tests for my application and trying to figure out what is the current "best practice"... I have looked at EasyMock, Cactus and Mockobjects... some of these seem old and others more complicated to get setup.

We use all these options, each have trade offs.

The best thing for us has been to write our tests/classes so they don't depend on turbine proper. This separation is very important, but not always easy. Lately we've used CRC sessions to ensure the UI doesn't leak into our application. Then we can have turbine dependent tests in one area, and keep the rest of our code POJO's. This also makes dependencies easier to manage.

Mocks ( usually coupled with starting Turbine standalone ) are quick, but difficult to setup. EasyMock is simpler than pure mock objects ( you can even mock classes now not just interfaces ) but not so easy to share setups among tests.

Our latest projects use cactus, jetty, and maven 2. Cactus provides jetty test setup classes. We just create a suite using these setups, it starts our turbine application running inside a standalone jetty, and then run all our in-container tests. This lets us test rundata, context, actions, you name it. Maven and cactus do most the heavy lifting. The cactus plugin for maven 2 seems to be stalled so this is the best alternative at the moment.

There also seems to be some lacking help in the area of setting up your build environment with the proper testing jar's in order to get Eclipse to run the unit tests properly..

We use maven/maven2 for this. We also have spun our own custom ant build in the past.

do you test against a database or do you just test functionality of action and om classes?

Separation. We test our actions using the above strategies ( mocks/cactus ). We use generated Torque OM classes and generally accept that Torque is generating correctly. When we do test changes we make to the generated classes or a tracer-bullet test, we try to use an in-memory db for tests ( like hsqldb ) for speed. If we can't we do write a few the shoot all the way through to the db, just to be sure we have it wired up correctly.

If you have a good working test case for an action class (and can tell me how you setup your Eclipse environment build path) this would be of great help.

Maven really helps here. The eclipse plugin for maven sets up your classpath ( albeit based on turbine's published deps ) and away you go.

--
=====================================================================
Jeffrey D. Brekke                                   [EMAIL PROTECTED]
Wisconsin,  USA                                     [EMAIL PROTECTED]
                                                    [EMAIL PROTECTED]
http://www.bloglines.com/blog/jbrekke               [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to