PostgreSQL er ikke en indlejret server i hukommelsen. Det kan ikke bare indlæses som et bibliotek og køre.
Du skal bruge en kontrolkode for testsele for at:
-
initdb
en midlertidig datadir -
Rediger
postgresql.conf
efter behov ved at tilføje linjer eller ved at aktivere eninclude_dir
og slippe filer i den. Hvis du kun har brug for en triviel konfiguration, kan du muligvis springe dette trin over; ting somport
kan indstilles via miljøvariabler, og mange andre kan indstilles med-c
flag til serverstartkommandoen. -
generere et tilfældigt portnummer til brug
-
Start serveren - kør
postgres -D the_datadir
en ny serverinstans ved hjælp af JavasProcess
ledelse. Du kan sende brugerdefinerede konfigurationsværdier med-c
og kan også indstille miljøvariabler til at kontrollere adfærd. -
Opret forbindelse via JDBC og
CREATE DATABASE
kør derefter din testopsætning -
Kør dine tests
-
Stop serveren ved at dræbe den proces, du startede.
-
Slet datadirigenten
Du vil gerne udføre processtyringen i en klasse med passende midlertidig mappehåndtering, oprydning ved uren afslutning (dræb Pg-serveren og slet datadirigenten ved undtagelse), osv.
Jeg vil blive overrasket, hvis du ikke kan finde en prøveselekode på dåse til at låne til dette. Jeg spekulerer på, om vi skal tilføje nogle til PgJDBC og samle det i driveren? Hvis du finder noget godt, eller skriver noget godt, så ping mig venligst ved at kommentere dette svar, og jeg vil overveje det til medtagelse som en hjælpeklasse i PgJDBC.
Når det er sagt, er det meget mere almindeligt i stedet at køre dine tests i en nyoprettet testdatabase i en eksisterende PostgreSQL-instans, der allerede kører på din server. Du konfigurerer bare din testpakke med et PostgreSQL brugernavn/adgangskode/host/port/database (eller lader den oprette forbindelse til postgres
database og CREATE
og DROP
databasen). Når alt kommer til alt, vil der altid være behov for en vis konfiguration:installation eller kompilering af PostgreSQL, sørg for at binære filer er på PATH
osv.
En anden mulighed er at bruge Amazon RDS:Brug AWS RDS API'erne til at starte en ny PostgreSQL-instans og bruge den til dine tests. Dette er sandsynligvis ikke praktisk, medmindre dine test kører i lang tid på grund af opsætningstiden og den minimale køretid, men det er en anden mulighed, ligesom den lignende service hos Heroku.