Find Questions…

Close ×
First time here? Check out the FAQ!

Unit testing active objects for multiple databases

Bjarni Thorbjornsson asked this question · 663 karma ·

Hi,

Can someone tell me how to test active objects against multiple databases? I want to unit test my plugin (or at least my AO code) against all the major databases: MySQL, MS-SQL, Oracle, Postgres.

I see that there is something called "DynamicJdbcConfiguration" which according to the JavaDoc is: "A JDBC configuration that can be configured through either system properties or a configuration file." Does anyone have an example of how to use this "DynamicJdbcConfiguration" for multiple databases?

Many thanks,

-Bjarni

603 views

One Answer:

Samuel Le Berrigaud [Atlassian] · 1,412 karma ·

Hey Bjarni,

first you should probably read this first document, but I'm sure you have. This explains the configuration of the testing framework for a single database, and also mentions some important information relating to @NameConverters that should be used when testing your plugin.

Now if you want to test against multiple databases, I suggest you use the following strategy, which is used both in the AO lib and the AO plugin itself:

  1. Use the DynamicJdbcConfiguration
  2. Have one maven profile per database, the default one probably being HSQL. Remember that HSQL is more permissive than other DBs though.
  3. In each profile:
    1. have a system property set the database you want to use, you'll need to set this against the surefire plugin
    2. Add a dependency to the JDBC driver needed to connect to this database

This should get you started. Running your tests should be as simple as running mvn install -P'database'.

Some things to note:

  • You will not be able to run the tests against all the databases at once, we have one Bamboo build per database.
  • Dynamic JDCB configuration and its underlying classes is opiniated, i.e. databases should run on localhost, named 'ao_test' with a user 'ao_user'/'ao_password'
  • I't simple to write your own Jdbc configuration, following the same model if you need to, just a few lines of Java.
  • You might want to look at this pom.xml which contains all the integrations profiles for the AO lib.
  • You'll there the use of the database-maven-plugin, which is a simple plugin I wrote to help configure the database the way I want.

I hope that clarifies things a bit. Don't hesitate to comment if you need more info, I'll be happy to provide.

Looking for something else?

Find Questions…

or Browse other questions tagged:

or Ask a Question