Skip to content

Clarify documentation on importing Testcontainer declarations and using @ServiceConnection or @DynamicPropertySource #35629

@sergey-morenets

Description

@sergey-morenets

Hi

We tried to use Spring Boot & TestContainers integration added in Spring Boot 3.1.0.

We used example from the reference documentation:

public interface MyContainers {

    @Container
    MongoDBContainer mongoContainer = new MongoDBContainer("mongo:5.0");

    @Container
    Neo4jContainer<?> neo4jContainer = new Neo4jContainer<>("neo4j:5");

}

So we created an interface with our container declaration:

public interface ProjectContainers {

	@Container
	GenericContainer<?> mysql = new MySQLContainer("mysql:8");

}

Then we created class-configuration:

@TestConfiguration(proxyBeanMethods = false)
@ImportTestcontainers(ProjectContainers.class)
public class ContainerConfiguration {
}

and finally our integration test:

@SpringBootTest(classes = ContainerConfiguration.class)
@Testcontainers
public class OrderServiceTest {

	@Autowired
	OrderService orderService;

	@Test
	void save_success() {
		Order order = new Order();
		orderService.save(order);
	}

However our test failed with exception:

Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect')
	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:188) ~[hibernate-core-6.2.2.Final.jar:6.2.2.Final]
	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:87) ~[hibernate-core-6.2.2.Final.jar:6.2.2.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:274) ~[hibernate-core-6.2.2.Final.jar:6.2.2.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:34) ~[hibernate-core-6.2.2.Final.jar:6.2.2.Final]
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:119) ~[hibernate-core-6.2.2.Final.jar:6.2.2.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:264) ~[hibernate-core-6.2.2.Final.jar:6.2.2.Final]

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions