Skip to content

Commit bfa3b90

Browse files
committed
refactor: MySQL 테스트 컨테이너 설정 변경
- redis 테스트 컨테이너와 동일하게 설정하여 불필요한 인지 부하를 줄인다.
1 parent 3d203e8 commit bfa3b90

File tree

2 files changed

+14
-26
lines changed

2 files changed

+14
-26
lines changed
Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,24 @@
11
package com.example.solidconnection.support;
22

3-
import jakarta.annotation.PostConstruct;
4-
import org.springframework.boot.jdbc.DataSourceBuilder;
5-
import org.springframework.boot.test.context.TestConfiguration;
6-
import org.springframework.context.annotation.Bean;
3+
import org.springframework.boot.test.util.TestPropertyValues;
4+
import org.springframework.context.ApplicationContextInitializer;
5+
import org.springframework.context.ConfigurableApplicationContext;
76
import org.testcontainers.containers.MySQLContainer;
8-
import org.testcontainers.junit.jupiter.Container;
97

10-
import javax.sql.DataSource;
8+
public class MySQLTestContainer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
119

12-
@TestConfiguration
13-
public class MySQLTestContainer {
14-
15-
@Container
1610
private static final MySQLContainer<?> CONTAINER = new MySQLContainer<>("mysql:8.0");
1711

18-
@Bean
19-
public DataSource dataSource() {
20-
return DataSourceBuilder.create()
21-
.url(CONTAINER.getJdbcUrl())
22-
.username(CONTAINER.getUsername())
23-
.password(CONTAINER.getPassword())
24-
.driverClassName(CONTAINER.getDriverClassName())
25-
.build();
12+
static {
13+
CONTAINER.start();
2614
}
2715

28-
@PostConstruct
29-
void startContainer() {
30-
if (!CONTAINER.isRunning()) {
31-
CONTAINER.start();
32-
}
16+
@Override
17+
public void initialize(ConfigurableApplicationContext applicationContext) {
18+
TestPropertyValues.of(
19+
"spring.datasource.url=" + CONTAINER.getJdbcUrl(),
20+
"spring.datasource.username=" + CONTAINER.getUsername(),
21+
"spring.datasource.password=" + CONTAINER.getPassword()
22+
).applyTo(applicationContext.getEnvironment());
3323
}
3424
}

src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import org.junit.jupiter.api.extension.ExtendWith;
44
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
55
import org.springframework.boot.test.context.SpringBootTest;
6-
import org.springframework.context.annotation.Import;
76
import org.springframework.test.context.ContextConfiguration;
87
import org.testcontainers.junit.jupiter.Testcontainers;
98

@@ -13,11 +12,10 @@
1312
import java.lang.annotation.Target;
1413

1514
@ExtendWith({DatabaseClearExtension.class})
16-
@ContextConfiguration(initializers = RedisTestContainer.class)
15+
@ContextConfiguration(initializers = {RedisTestContainer.class, MySQLTestContainer.class})
1716
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
1817
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
1918
@Testcontainers
20-
@Import({MySQLTestContainer.class})
2119
@Target(ElementType.TYPE)
2220
@Retention(RetentionPolicy.RUNTIME)
2321
public @interface TestContainerSpringBootTest {

0 commit comments

Comments
 (0)