Skip to content

Commit fec5de2

Browse files
committed
refactor: redis testcontainers 설정 수정
1 parent 6c97904 commit fec5de2

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed
Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
package com.example.solidconnection.support;
22

3-
import jakarta.annotation.PostConstruct;
4-
import org.springframework.boot.test.context.TestConfiguration;
5-
import org.springframework.test.context.DynamicPropertyRegistry;
6-
import org.springframework.test.context.DynamicPropertySource;
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.GenericContainer;
8-
import org.testcontainers.junit.jupiter.Container;
97

10-
@TestConfiguration
11-
public class RedisTestContainer {
8+
public class RedisTestContainer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
129

13-
@Container
14-
private static final GenericContainer<?> CONTAINER = new GenericContainer<>("redis:7.0");
10+
private static final int ORIGINAL_PORT = 6379;
11+
private static final GenericContainer<?> CONTAINER = new GenericContainer<>("redis:7.0")
12+
.withExposedPorts(ORIGINAL_PORT);
1513

16-
@DynamicPropertySource
17-
static void redisProperties(DynamicPropertyRegistry registry) {
18-
registry.add("spring.redis.host", CONTAINER::getHost);
19-
registry.add("spring.redis.port", CONTAINER::getFirstMappedPort);
14+
static {
15+
CONTAINER.start();
2016
}
2117

22-
@PostConstruct
23-
void startContainer() {
24-
if (!CONTAINER.isRunning()) {
25-
CONTAINER.start();
26-
}
18+
@Override
19+
public void initialize(ConfigurableApplicationContext applicationContext) {
20+
TestPropertyValues.of(
21+
"spring.data.redis.host=" + CONTAINER.getHost(),
22+
"spring.data.redis.port=" + CONTAINER.getMappedPort(ORIGINAL_PORT)
23+
).applyTo(applicationContext.getEnvironment());
2724
}
2825
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
55
import org.springframework.boot.test.context.SpringBootTest;
66
import org.springframework.context.annotation.Import;
7+
import org.springframework.test.context.ContextConfiguration;
78
import org.testcontainers.junit.jupiter.Testcontainers;
89

910
import java.lang.annotation.ElementType;
@@ -12,10 +13,11 @@
1213
import java.lang.annotation.Target;
1314

1415
@ExtendWith({DatabaseClearExtension.class})
16+
@ContextConfiguration(initializers = RedisTestContainer.class)
1517
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
1618
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
1719
@Testcontainers
18-
@Import({MySQLTestContainer.class, RedisTestContainer.class})
20+
@Import({MySQLTestContainer.class})
1921
@Target(ElementType.TYPE)
2022
@Retention(RetentionPolicy.RUNTIME)
2123
public @interface TestContainerSpringBootTest {

0 commit comments

Comments
 (0)