Package br.com.xadm.comum.teste
Postgres e
Garage, o
PostgresTestPropertyProvider que injeta a URL do container no
Micronaut Test, e a fábrica de regras ArchUnit.
Consumido como testImplementation; as classes vivem em src/main para o app
herdá-las no seu test classpath. O ArchitectureTest de cada app compõe
RegrasArquitetura com as regras próprias dele.
Postgres no teste
O padrão da casa é o singleton PostgresTestResource, injetado
pelo PostgresTestPropertyProvider; a base
IntegracaoComPostgres junta os dois e zera as tabelas do app antes
de cada teste. Alvo que exige estado próprio
(flag de servidor, timeline de migração) sobe container dedicado. A regra e as travas de teste
estão em
Java/Micronaut, Testes.
Teste que depende de Docker roda por padrão e só pula com o Docker ausente, com aviso alto
(DockerDisponivelCondition). As bases que sobem container —
IntegracaoComPostgres e
AbstractIntegrationTest — trazem a
IntegracaoDocker, e a subclasse herda a tag docker e a
condição sem repetir nada. Teste de container dedicado, fora dessas bases, anota a
IntegracaoDocker ele mesmo.
ArchUnit: herde a regra e a prova de que ela rodou
Regra ArchUnit sobre import vazio passa verde testando nada. Por isso a
fábrica entrega a defesa anti-vácuo junto: o ArchitectureTest que compõe
RegrasArquitetura abre pelo
RegrasArquitetura.importNaoVazio(). O piso de versão que sustenta
isso (archunit ≥ 1.4.1 no Java 25) é declarado pelo próprio módulo, e quem herda o
api(...) daqui não deve rebaixá-lo.
-
ClassDescriptionHelpers para testes de integração com PostgreSQL via Testcontainers (
postgres:18-alpine).Pula o teste de integração quando não há Docker, com aviso alto: o motivo sai emERRORno log e no relatório do JUnit, que mostra o teste como skipped.Sobe um único container Garage (object storage S3-compatível) para os testes de integração — análogo aPostgresTestResource.Base dos testes@MicronautTestcom o Postgres de teste da casa: o singleton doPostgresTestResource, injetado peloPostgresTestPropertyProvider, com as tabelas do app zeradas antes de cada teste.Marca o teste de integração que precisa de Docker (Testcontainers: Postgres, Garage).TestPropertyProviderque aponta o datasource do Micronaut Test para o Postgres de teste da casa (PostgresTestResource), sobrescrevendo ojdbc:...doapplication.yml.Sobe um únicoPostgreSQLContainer(postgres:18-alpine) compartilhado entre todos os testes de integração da mesma JVM — o Postgres de teste padrão da casa.Fábrica das regras ArchUnit compartilhadas da casa.