Nyenyec N wrote:

Hi,

I have several JUnit tests that I run as part of the builds and also
from inside the Eclipse IDE.
So far my app uses SQL Server and HSQLDB. In both cases I found a way
to quickly create a clean database (with no tables) use it and discard
it after each test.

In SQL Server I use the CREATE/DROP DATABASE call, in HSQLDB I simply
use an in-memory instance. Creating and discarding a database takes
about 2 secs in SQL Server and 1 sec in HSQLDB.

In Derby however, connecting to a URL like this
"jdbc:derby:temp/testdb;create=true"
takes about 20 secs on the same machine (P4, 1Gb mem).
Is there a way to do this quicker or approximate the behavior
described above in some other way?

Thanks,
Nyenyec



Before a JVM can use Derby it must load th Derby classes. A fairly large number of classes are involved in creating a database, so loading them takes an appreciable amount of time. This is unavoidable the first time that you create a database in the JVM. The second time that you create a database the classes will probably still be loaded, so the second database creation should be faster.

You want to group tests together to economize on class loading and database creation overhead. Of course, if you go overboard on this it is hard to diagnose problems and to maintain the tests.

Jack Klebanoff

Reply via email to