PostgreSQL är inte en inbäddad server i minnet. Det kan inte bara laddas som ett bibliotek och köras.
Du behöver en kontrollkod för testselen för att:
-
initdben tillfällig datakatalog -
Redigera
postgresql.confsom krävs genom att lägga till rader eller genom att aktivera eninclude_diroch släpper filer i den. Om du bara behöver en trivial konfiguration kanske du kan hoppa över detta steg; saker somportkan ställas in via miljövariabler, och många andra kan ställas in med-cflaggar till serverns startkommando. -
generera ett slumpmässigt portnummer att använda
-
Starta servern - kör
postgres -D the_datadiren ny serverinstans som använder JavasProcessförvaltning. Du kan skicka anpassade konfigurationsvärden med-coch kan även ställa in miljövariabler för att kontrollera beteendet. -
Anslut över JDBC och
CREATE DATABASEkör sedan din testinställning -
Kör dina tester
-
Stoppa servern genom att döda processen du startade.
-
Ta bort datakatalogen
Du kommer att vilja göra processhanteringen i en klass med lämplig temporär kataloghantering, rensning vid oren utgång (döda Pg-servern och ta bort datakatalogen vid undantag), etc.
Jag kommer att bli förvånad om du inte kan hitta kod för burktestsele att låna för detta. Jag undrar om vi ska lägga till några till PgJDBC och bunta ihop det i drivrutinen? Om du hittar något bra, eller skriver något bra, vänligen pinga mig genom att kommentera det här svaret så överväger jag att det ska ingå som en verktygsklass i PgJDBC.
Som sagt, det är mycket vanligare att istället köra dina tester i en nyskapad testdatabas i en befintlig PostgreSQL-instans som redan körs på din server. Du konfigurerar bara din testsvit med ett PostgreSQL-användarnamn/lösenord/värd/port/databas (eller låter den ansluta till postgres databas och CREATE och DROP databasen). När allt kommer omkring kommer det alltid att krävas en viss konfiguration:installera eller kompilera PostgreSQL, se till att binärfilerna finns på PATH osv.
Ett annat alternativ är att använda Amazon RDS:Använd AWS RDS API för att starta en ny PostgreSQL-instans och använda den för dina tester. Detta är förmodligen inte praktiskt om inte dina test körs under lång tid på grund av installationstiden och minsta körtid, men det är ett annat alternativ, liksom den liknande tjänsten på Heroku.