PostgreSQL is geen in-memory server die kan worden ingesloten. Het kan niet zomaar als een bibliotheek worden geladen en worden uitgevoerd.
U heeft een testkabelboomcontrolecode nodig om:
-
initdbeen tijdelijke datadir -
Bewerk
postgresql.confzoals vereist door regels toe te voegen, of door eeninclude_dir. in te schakelen en bestanden erin te laten vallen. Als je alleen een triviale configuratie nodig hebt, kun je deze stap misschien overslaan; dingen zoals deportkan worden ingesteld via omgevingsvariabelen, en vele andere kunnen worden ingesteld met-cvlaggen naar de opstartopdracht van de server. -
genereer een willekeurig poortnummer om te gebruiken
-
Start de server - voer
postgres -D the_datadiruit een nieuwe serverinstantie met behulp van Java'sProcessbeheer. U kunt aangepaste configuratiewaarden doorgeven met-cen kan ook omgevingsvariabelen instellen om het gedrag te controleren. -
Maak verbinding via JDBC en
CREATE DATABASEvoer vervolgens uw testopstelling uit -
Voer uw tests uit
-
Stop de server door het gestarte proces te beëindigen.
-
Verwijder de datadir
U wilt het procesbeheer doen in een klasse met de juiste tijdelijke directory-afhandeling, opschonen bij onrein afsluiten (de Pg-server beëindigen en de datadir verwijderen bij uitzondering), enz.
Het zal me verbazen als je geen ingeblikte testharnascode kunt vinden om hiervoor te lenen. Ik vraag me af of we wat aan PgJDBC moeten toevoegen en het in de driver moeten bundelen? Als je iets goeds vindt, of iets goeds schrijft, ping me dan alsjeblieft door op dit antwoord te reageren en ik zal het beschouwen voor opname als een hulpprogrammaklasse in PgJDBC.
Dat gezegd hebbende, is het veel gebruikelijker om uw tests in plaats daarvan uit te voeren in een nieuw gemaakte testdatabase in een bestaande PostgreSQL-instantie die al op uw server draait. U configureert gewoon uw testsuite met een PostgreSQL-gebruikersnaam/wachtwoord/host/poort/database (of laat het verbinding maken met de postgres database en CREATE en DROP de databank). Er zal immers altijd enige configuratie nodig zijn:het installeren of compileren van PostgreSQL, ervoor zorgen dat de binaire bestanden op het PATH staan , enz.
Een andere optie is om Amazon RDS te gebruiken:gebruik de AWS RDS API's om een nieuwe PostgreSQL-instantie te starten en deze voor uw tests te gebruiken. Dit is waarschijnlijk niet praktisch, tenzij je tests lang duren vanwege de insteltijd en minimale looptijd, maar het is een andere optie, net als de vergelijkbare service bij Heroku.