No need for manual deletion or an external script... just clear out the database in your test tear-down code. Here is our strategy (junit 4.x):
- Before all test cases (@BeforeClass): Generate a temporary directory randomly; create a database there, to be used by tests. - After each test case (@After): Drop all tables from the database - After all test cases (@AfterClass): Delete the temporary directory recursively. Jim > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Aaron > Zeckoski > Sent: Wednesday, November 05, 2008 7:36 AM > To: Derby Discussion > Subject: Re: Embedded database which only stores data in memory? > > Thanks for the responses. > > To answer the earliest question above, we are just using Derby for > testing. There are a couple major missing features that make it > unsuitable for our database needs for production. We were using HSQLDB > for testing before but have found the lack or true transactions to be > a real issue (i.e. not catching TX problems in the tests). It is > extremely easy to setup and very very fast to start though so those > aspects of HSQLDB made it almost ideal. > > The suggestion about looking at the test cases seems reasonable so I > will do that shortly. > I am guessing you mean the stuff here right? > http://svn.apache.org/repos/asf/db/derby/code/trunk/java/testing/org/apach > e/derbyTesting/ > I had a little trouble figuring out the source structure so let me > know if this is the wrong stuff to be looking at. > > There is still a big issue no one in this thread has addressed yet and > that it the fact that derby creates files in the file system for each > test which we have to manually clear (or end up with tests that fail > because the derby database is already there and has unexpected data in > it). We are trying to drop derby in without changing our tests much > and so far I have been able to limit the changes to about 200 lines of > code (which already seems like a lot). Unfortunately, this is playing > havok with our CI server because we have to run an extra script now to > clear out the derby files before and after each build (just to be > sure). > I imagine there must be some option to disable the files creation. If > anyone knows how to do this please let me know. > The startup time is annoying but we can live with slower tests if they > are more reliable. > > Apologies if these are naive questions or I come off a bit strong. I > am under some time pressure here and vastly underestimated how long it > would take to switch from HSQLDB to Derby for testing. > Suggestions appreciated. > -AZ > > > On Wed, Nov 5, 2008 at 12:26 AM, Bryan Pendleton > <[EMAIL PROTECTED]> wrote: > >> Just to chime in here. We also use Derby for deployment, and are > having > >> the same grief with setup time for unit tests > > > > For what it's worth, Derby itself uses Derby in its own unit tests (of > > course), and overall we have quite good performance, I believe, in the > > Derby unit tests themselves. > > > > The Derby source tree contains extensive tests and test utilities, and > > is a great source of ideas about how to set up unit tests to work with > > a database efficiently. > > > > You might try exploring that body of testing code, and you might try > > contacting the folks on the derby-dev list to discuss the particular > > issues you're seeing. > > > > There's also an extensive section in the Derby wiki which discusses > > the technique behind the Derby unit testing harness. > > > > I believe that, with a certain amount of care, you should be able to > > achieve quite good performance for your unit testing using Derby. > > > > thanks, > > > > bryan > > > > > > -- > Aaron Zeckoski ([EMAIL PROTECTED]) > Senior Research Engineer - CARET - Cambridge University > [http://bugs.sakaiproject.org/confluence/display/~aaronz/] > Sakai Fellow - [http://aaronz-sakai.blogspot.com/]