Maven
Örnek
Şöyle yaparız
<dependency><groupId>org.testcontainers</groupId><artifactId>mysql</artifactId><scope>test</scope></dependency>
Örnek
Şöyle yaparız
testImplementation("org.testcontainers:mysql") testImplementation("org.testcontainers:spock") testImplementation("org.testcontainers:testcontainers")
Örnek
Şöyle yaparız
datasources:
default:
url: jdbc:tc:mysql:8:///db
driverClassName: org.testcontainers.jdbc.ContainerDatabaseDriver
testcontainers: reuse: enable: true
Finally, in order to speed the testing process up, we should try to set a level of isolation in our tests that allow us to reuse the same image, which will reduce our test time dramatically:
MySQLContainer Sınıfı
Örnek
Şöyle yaparız
public static MySQLContainer mySQLContainer = new MySQLContainer("mysql:5.7") .withUsername("username") .withPassword("password") .withDatabaseName("test_db");
Şöyle yaparız. Burada normalde container sınıfının start() metodunu çağırmaya gerek yok.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @AutoConfigureWebTestClient @Testcontainers class OrderControllerTest { static final MySQLContainer MY_SQL_CONTAINER; @Autowired WebTestClient webTestClient; @Autowired private OrderEntityRepository orderEntityRepository; static { MY_SQL_CONTAINER = new MySQLContainer("mysql:latest"); MY_SQL_CONTAINER.start(); } @DynamicPropertySource static void configureTestProperties(DynamicPropertyRegistry registry){ registry.add("spring.datasource.url",() -> MY_SQL_CONTAINER.getJdbcUrl()); registry.add("spring.datasource.username",() -> MY_SQL_CONTAINER.getUsername()); registry.add("spring.datasource.password",() -> MY_SQL_CONTAINER.getPassword()); registry.add("spring.jpa.hibernate.ddl-auto",() -> "create"); } ... }
Hiç yorum yok:
Yorum Gönder