Tenho várias classes de teste que usam o contêiner de teste Mongo. Em vez de declarar um contêiner usando o mesmo código várias vezes, eu queria criar uma configuração de teste para evitar código repetitivo. Aqui está o que eu criei:
@TestConfiguration
@Testcontainers
public class MongoTestContainerConfig {
@Container
@ServiceConnection
static final MongoDBContainer MONGO_CONTAINER = new MongoDBContainer("mongo:6.0");
}
Porém, quando tento executar meus testes, com esta configuração
@DataMongoTest
@Import(MongoTestContainerConfig.class)
class ServiceRepositoryTest {
@Autowired
private MongoTemplate mongoTemplate;
Ele retorna o seguinte rastreamento de pilha de exceção
[localhost:27017] [ ] org.mongodb.driver.cluster: Exceção no thread do monitor ao conectar ao servidor localhost:27017 com.mongodb.MongoSocketOpenException: Exceção ao abrir o soquete Causado por: java.net.ConnectException: Conexão recusada
Quando declaro o contêiner de teste dentro da classe de teste, tudo funciona bem.
@Testcontainers
@DataMongoTest
class CspRepositoryTest {
@Container
@ServiceConnection
private static final MongoDBContainer MONGO_CONTAINER = new MongoDBContainer("mongo:6.0");
declare o testcontainer como uma classe abstrata, que você estende pelos seus testes reais. Algo assim: