I recently finished making a mechanism for enabling the use of different databases with a set of unit tests.
A thorough explanation of the mechanism in its entirety can be found here:
The reason I’m also posting this here is because the mechanism that I describe can actually be built in to most maven projects that contain unit tests that use persistence.
In my case, the specifics are as follows:
- The mechanisms are built into the jBPM framework (the code can be found here).
- The unit tests are spefically using JTA (the Java Transaction API).
- The Transaction layer is handled by the Bitronix transaction manager.
But none of these details mean that the same mechanism can’t be applied to any other project, including those that don’t do anything with JTA. Using JPA is to some degree intrinsic to the mechanism, although other java persistence frameworks that also use XML configuration could also be used, I think.
In short, it comes down to maven filtering + the Properties mechanism in Java + using XML configuration for JPA (persistence.xml, in this case).