init 方法调用失败;嵌套异常是 java.lang.RuntimeException: 无法启动 redis 服务器
Invocation of init method failed; nested exception is java.lang.RuntimeException: Can't start redis server
我在我们的 Webflux 测试用例中使用嵌入式 Redis,使用 pom.xml 文件中的以下依赖项
<dependency>
<groupId>com.github.kstyrc</groupId>
<artifactId>embedded-redis</artifactId>
<version>0.6</version>
</dependency>
并为控制器测试使用以下注释 classes
@RunWith(SpringRunner.class)
@AutoConfigureWebTestClient(timeout = "36000000")
@WithMockUser
@TestPropertySource(locations = "classpath:application-test.properties")
@SpringBootTest(classes = Application.class)
@DirtiesContext
当我运行个人控制器测试class时,所有控制器测试都通过了。
当我启动两个控制器测试 classes 时,一个控制器测试 class 失败并出现以下错误:
Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embededRedis': Invocation of init method failed; nested exception is java.lang.RuntimeException: Can't start redis server. Check logs for details.
下面是我在 JUnit 测试中使用的嵌入式 Redis class
@Component
public class EmbededRedis {
@Value("${spring.redis.port}")
private int redisPort;
private RedisServer redisServer;
@PostConstruct
public void startRedis() throws IOException {
if(redisServer==null||!redisServer.isActive()) {
redisServer = new RedisServer(redisPort);
redisServer.start();
}
}
@PreDestroy
public void stopRedis() {
if(redisServer!=null) {
redisServer.stop();
}
}
}
检查Redis端口是否可用。如果没有,尝试分配一个不同的端口
@Component
public class EmbededRedis {
@Value("${spring.redis.port:9999}")
private int redisPort;
private RedisServer redisServer;
@PostConstruct
public void startRedis() throws IOException {
if(redisServer==null||!redisServer.isActive()) {
redisServer = new RedisServer(redisPort);
redisServer.start();
}
}
@PreDestroy
public void stopRedis() {
if(redisServer!=null) {
redisServer.stop();
}
}
}
重启系统后问题已解决
我在我们的 Webflux 测试用例中使用嵌入式 Redis,使用 pom.xml 文件中的以下依赖项
<dependency>
<groupId>com.github.kstyrc</groupId>
<artifactId>embedded-redis</artifactId>
<version>0.6</version>
</dependency>
并为控制器测试使用以下注释 classes
@RunWith(SpringRunner.class)
@AutoConfigureWebTestClient(timeout = "36000000")
@WithMockUser
@TestPropertySource(locations = "classpath:application-test.properties")
@SpringBootTest(classes = Application.class)
@DirtiesContext
当我运行个人控制器测试class时,所有控制器测试都通过了。
当我启动两个控制器测试 classes 时,一个控制器测试 class 失败并出现以下错误:
Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embededRedis': Invocation of init method failed; nested exception is java.lang.RuntimeException: Can't start redis server. Check logs for details.
下面是我在 JUnit 测试中使用的嵌入式 Redis class
@Component
public class EmbededRedis {
@Value("${spring.redis.port}")
private int redisPort;
private RedisServer redisServer;
@PostConstruct
public void startRedis() throws IOException {
if(redisServer==null||!redisServer.isActive()) {
redisServer = new RedisServer(redisPort);
redisServer.start();
}
}
@PreDestroy
public void stopRedis() {
if(redisServer!=null) {
redisServer.stop();
}
}
}
检查Redis端口是否可用。如果没有,尝试分配一个不同的端口
@Component
public class EmbededRedis {
@Value("${spring.redis.port:9999}")
private int redisPort;
private RedisServer redisServer;
@PostConstruct
public void startRedis() throws IOException {
if(redisServer==null||!redisServer.isActive()) {
redisServer = new RedisServer(redisPort);
redisServer.start();
}
}
@PreDestroy
public void stopRedis() {
if(redisServer!=null) {
redisServer.stop();
}
}
}
重启系统后问题已解决