Skip to content

Commit 9e08eb7

Browse files
committed
Got the simple Redis connectivity test case working. Using @DataRedisTest so spring.data.redis.host/port as my keys for props that I inject w/ @DynamicPropertySource, not spring.redis.host/port (this was in my application-test.yml file and it was causing problems). For now the test spins up its own Redis container, should probably modularize later as the project progresses.
1 parent 0030d6e commit 9e08eb7

3 files changed

Lines changed: 22 additions & 29 deletions

File tree

‎springqpro-backend/src/main/java/com/springqprobackend/springqpro/config/RedisConfig.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import org.springframework.data.redis.serializer.StringRedisSerializer;
1515

1616
// 2025-11-21-REDIS-PHASE-NOTE: THIS FILE CREATES CONNECTION FACTORY AND REDIS TEMPLATE W/ JACKSON SERIALIZER:
17-
@Configuration
1817
@Profile("!test")
18+
@Configuration
1919
public class RedisConfig {
2020
@Bean
2121
public LettuceConnectionFactory redisConnectionFactory(
Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,44 @@
11
package com.springqprobackend.springqpro.integration;
22

3-
import org.junit.jupiter.api.BeforeAll;
3+
import com.springqprobackend.springqpro.config.RedisTestConfig;
44
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.ExtendWith;
56
import org.springframework.beans.factory.annotation.Autowired;
67
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
7-
import org.springframework.boot.test.context.SpringBootTest;
8-
import org.springframework.boot.test.context.TestConfiguration;
98
import org.springframework.context.annotation.Import;
10-
import org.springframework.data.redis.core.RedisTemplate;
9+
import org.springframework.data.redis.core.RedisCallback;
1110
import org.springframework.data.redis.core.StringRedisTemplate;
12-
import org.springframework.test.context.ActiveProfiles;
13-
import org.springframework.test.context.ContextConfiguration;
11+
import org.springframework.test.context.DynamicPropertyRegistry;
12+
import org.springframework.test.context.DynamicPropertySource;
13+
import org.springframework.test.context.junit.jupiter.SpringExtension;
1414
import org.testcontainers.containers.GenericContainer;
1515
import org.testcontainers.junit.jupiter.Container;
1616
import org.testcontainers.junit.jupiter.Testcontainers;
1717

18-
import com.springqprobackend.springqpro.config.RedisConfig;
19-
import org.testcontainers.utility.DockerImageName;
20-
18+
//@ContextConfiguration(classes = { RedisPingIntegrationTest.Config.class })
19+
//@Import(RedisTestConfig.class)
2120
@DataRedisTest
2221
@Testcontainers
23-
@ContextConfiguration(classes = { RedisPingIntegrationTest.Config.class })
22+
@ExtendWith(SpringExtension.class)
2423
class RedisPingIntegrationTest {
24+
// Testcontainers Redis:
25+
@Container
26+
static final GenericContainer<?> REDIS =
27+
new GenericContainer<>("redis:7.2")
28+
.withExposedPorts(6379);
2529

26-
@TestConfiguration
27-
@Import(com.springqprobackend.springqpro.config.RedisConfig.class)
28-
static class Config {
29-
static GenericContainer<?> REDIS =
30-
new GenericContainer<>(DockerImageName.parse("redis:7.2"))
31-
.withExposedPorts(6379);
32-
static {
33-
REDIS.start();
34-
System.setProperty("spring.data.redis.host", REDIS.getHost());
35-
System.setProperty("spring.data.redis.port", REDIS.getMappedPort(6379).toString());
36-
}
30+
// Register dynamic Spring properties BEFORE context starts
31+
@DynamicPropertySource
32+
static void configureRedis(DynamicPropertyRegistry registry) {
33+
registry.add("spring.data.redis.host", () -> REDIS.getHost());
34+
registry.add("spring.data.redis.port", () -> REDIS.getMappedPort(6379));
3735
}
3836

3937
@Autowired
4038
private StringRedisTemplate stringRedisTemplate;
41-
4239
@Test
4340
void testPing() {
44-
System.out.println("What's poppin!");
41+
String result = stringRedisTemplate.execute((RedisCallback<String>) (conn) -> conn.ping());
42+
assert result.equalsIgnoreCase("PONG");
4543
}
4644
}
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
11
spring:
2-
redis:
3-
host: localhost
4-
port: 6379
5-
password:
6-
timeout: 2000
72
main:
83
allow-bean-definition-overriding: true

0 commit comments

Comments
 (0)