Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to start a postgresql instance for integration testing

Usually I use hsqldb for some integration tests and it works fine. But some test need to have a postgresql instance. As our production server run postgresql it is a good idea anyway to run the test against a production database.

Is there a maven plugin or something similar which can easily install and start a postgresql database on a given port and shut it down after all test are run?

Something like mysql-je for mysql?

like image 897
Janning Avatar asked Sep 26 '12 08:09

Janning


1 Answers

I don't know of anything. But you probably don't want to start and stop the actual PostgreSQL server; you want to have the server running all the time, and create and destroy databases as needed.

You can create a database in SQL, and also destroy it. If you set up an initial database that is empty, and not used for storing any data, you can have a workflow like:

  1. Connect to the empty database
  2. Issue the command to create a new database
  3. Run tests against the new database
  4. Issue the command to drop the new database
like image 147
Tom Anderson Avatar answered Nov 15 '22 03:11

Tom Anderson