Ich habe Code, der mit Postgres-Datenbanken über JDBC interagiert. Zu Testzwecken möchte ich jedoch schnell eine neue Datenbank erstellen und eine Verbindung zu ihr herstellen, ohne meine globale Postgres-Installation ändern, Benutzer verwalten zu müssen usw. Wie machen die Leute diese Art von Tests?
Ich würde die ausführbare Datei initdb
finden und sie verwenden, um einen neuen temporären Zwischenspeicher der Datenbankinstanz zu erstellen, der vom aktuellen Benutzer beschreibbar ist. Da es sich um eine Testinstanz handelt, verwenden Sie so etwas wie initdb --auth=trust --username=postgres -D /path/to/temp/datadir
, damit die neue Datenbank Verbindungen ohne Passwort akzeptiert.
Verwenden Sie pg_ctl
, um den Server zu starten. Geben Sie einen Port an, um den Standardsatz in der generierten postgresql.conf
zu überschreiben und Konflikte zu vermeiden.
Stellen Sie eine Verbindung mit dem neuen Datenbankcluster her und führen Sie alle erforderlichen Arbeiten aus. Sie sollten sich als Benutzer postgres
zuerst verbinden und alle erforderlichen CREATE USER
- und CREATE DATABASE
-Befehle ausführen, bevor Sie die Kontrolle über Ihren Testcode übergeben.
Schließlich verwenden Sie pg_ctl
, um es zu stoppen und schließlich das Datenverzeichnis zu löschen.
Alles was Sie brauchen ist initdb
und pg_ctl
für PATH
und eine Hilfsklasse um den Server zu verwalten.
Siehe:
Es gibt mehrere Bibliotheken, die das Erstellen von temporären Instanzen von Postgres zum Testen einfach machen:
Alle diese sind heruntergefahren und entfernen die temporäre Datenbank automatisch. So können Sie pg_tmp(1)
verwenden, um eine minimale Postgres-Instanz von einem Java zu erstellen:
Sie können eine Instanz von Postgres in Ihrem Home-Verzeichnis installieren, die auf einem anderen Port und unter Ihrem Benutzer ausgeführt wird. Sehen Sie hier zum Beispiel:
Sie können Ihren Code auch auf Heroku testen, je nachdem, was er ist. Sie geben Ihnen eine kleine virtuelle Postgres-Datenbank kostenlos.
Tags und Links java testing postgresql jdbc