PostgreSQL non è un server incorporabile in memoria. Non può essere semplicemente caricato come libreria ed eseguito.
Avrai bisogno di un codice di controllo del cablaggio di prova per:
-
initdb
una directory dati temporanea -
Modifica
postgresql.conf
come richiesto aggiungendo righe o abilitando unainclude_dir
e rilasciando i file al suo interno. Se hai solo bisogno di una configurazione banale potresti essere in grado di saltare questo passaggio; cose come laport
può essere impostato tramite variabili di ambiente e molti altri possono essere impostati con-c
segnala il comando di avvio del server. -
generare un numero di porta casuale da utilizzare
-
Avvia il server - esegui
postgres -D the_datadir
una nuova istanza del server che utilizzaProcess
di Java gestione. Puoi passare valori di configurazione personalizzati con-c
e può anche impostare variabili d'ambiente per controllare il comportamento. -
Connettiti tramite JDBC e
CREATE DATABASE
quindi esegui la configurazione di prova -
Esegui i tuoi test
-
Arresta il server interrompendo il processo che hai avviato.
-
Elimina la directory dei dati
Ti consigliamo di eseguire la gestione del processo in una classe con la gestione appropriata della directory temporanea, la pulizia in caso di uscita non pulita (uccidere il server Pg ed eliminare la datadir in caso di eccezione), ecc.
Sarò sorpreso se non riesci a trovare il codice di cablaggio di test in scatola da prendere in prestito per questo. Mi chiedo se dovremmo aggiungerne alcuni a PgJDBC e raggrupparlo nel driver? Se trovi qualcosa di buono o scrivi qualcosa di buono, per favore inviami un ping commentando questa risposta e la prenderò in considerazione per l'inclusione come classe di utilità in PgJDBC.
Detto questo, è molto più comune eseguire invece i test in un database di test appena creato in un'istanza PostgreSQL esistente che è già in esecuzione sul tuo server. Devi semplicemente configurare la tua suite di test con un nome utente/password/host/porta/database PostgreSQL (o lasciarlo connettere a postgres
database e CREATE
e DROP
la banca dati). Dopotutto, è sempre necessaria una configurazione:installare o compilare PostgreSQL, assicurarsi che i binari siano sul PATH
, ecc.
Un'altra opzione consiste nell'utilizzare Amazon RDS:utilizza le API di AWS RDS per avviare una nuova istanza PostgreSQL e utilizzarla per i test. Questo probabilmente non è pratico a meno che i tuoi test non vengano eseguiti per molto tempo a causa del tempo di configurazione e del tempo di esecuzione minimo, ma è un'altra opzione, così come il servizio simile su Heroku.