O PostgreSQL não é um servidor incorporável na memória. Ele não pode simplesmente ser carregado como uma biblioteca e executado.
Você precisará de algum código de controle de chicote de teste para:
-
initdb
um diretório de dados temporário
-
Editarpostgresql.conf
conforme necessário anexando linhas ou ativando uminclude_dir
e soltando arquivos nele. Se você precisar apenas de uma configuração trivial, poderá pular esta etapa; coisas como aport
pode ser definido por meio de variáveis de ambiente, e muitos outros podem ser definidos com-c
sinalizadores para o comando de inicialização do servidor.
-
gerar um número de porta aleatório para usar
-
Inicie o servidor - executepostgres -D the_datadir
uma nova instância de servidor usando oProcess
do Java gestão. Você pode passar valores de configuração personalizados com-c
e também pode definir variáveis de ambiente para controlar o comportamento.
-
Conecte-se por JDBC eCREATE DATABASE
em seguida, execute sua configuração de teste
-
Execute seus testes
-
Pare o servidor matando o processo que você iniciou.
-
Excluir o diretório de dados
Você desejará fazer o gerenciamento do processo em uma classe com manipulação apropriada de diretório temporário, limpeza na saída não limpa (matar o servidor Pg e excluir o datadir na exceção), etc.
Ficarei surpreso se você não conseguir encontrar o código de chicote de teste enlatado para emprestar para isso. Gostaria de saber se devemos adicionar alguns ao PgJDBC e empacotar no driver? Se você encontrar algo de bom, ou escrever algo de bom, por favor, envie um ping comentando esta resposta e eu a considerarei para inclusão como uma classe de utilitário no PgJDBC.
Dito isso, é muito mais comum executar seus testes em um banco de dados de teste recém-criado em uma instância existente do PostgreSQL que já é executada em seu servidor. Você acabou de configurar seu conjunto de testes com um nome de usuário/senha/host/porta/banco de dados do PostgreSQL (ou deixá-lo se conectar ao
postgres
banco de dados e CREATE
e DROP
o banco de dados). Afinal, alguma configuração sempre será necessária:instalar ou compilar o PostgreSQL, certificando-se de que os binários estejam no PATH
, etc Outra opção é usar o Amazon RDS:use as APIs do AWS RDS para iniciar uma nova instância do PostgreSQL e usá-la para seus testes. Isso provavelmente não é prático, a menos que seus testes sejam executados por um longo tempo devido ao tempo de configuração e ao tempo de execução mínimo, mas é outra opção, assim como o serviço semelhante no Heroku.