0%
Testcontainers: um banco de dados de verdade durante os testes

Testcontainers

Um PostgreSQL descartável por suíte, sem instalação nem banco compartilhado.

10-15 min

Testcontainers : une vraie base pendant les tests

A equipe tem três opções, e as três têm problemas. Um banco PostgreSQL compartilhado em um servidor de integração: duas execuções simultâneas se atrapalham, um teste deixa uma linha para trás e quebra o vizinho, e ninguém se atreve a reinicializá-lo. Um banco local instalado em cada máquina: cada pessoa tem a sua versão, suas extensões e um esquema ligeiramente defasado, e a chegada de uma nova pessoa desenvolvedora custa meio dia. Um banco em memória como o H2: rápido, uniforme e cego a tudo o que é específico do PostgreSQL, como vimos na primeira lição.

O Testcontainers propõe uma quarta via: a suíte de testes inicia por conta própria um contêiner Docker com PostgreSQL, aplica o esquema, executa os testes e depois destrói o contêiner. A versão é a declarada no código, portanto idêntica em todo lugar. O isolamento é total, então a execução em paralelo é possível. E, como é um PostgreSQL de verdade, jsonb, ILIKE, os índices GIN e as restrições de exclusão se comportam exatamente como em produção. O preço a pagar é real — o Docker passa a ser uma dependência da suíte e a inicialização consome tempo — e a maior parte desta lição trata justamente de como conter esse preço.

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!