我在机器上的本地Redis服务器的帮助下,使用Spring Boot运行了集成测试用例。
但是我想要一个不依赖任何服务器并且可以在任何环境下运行的嵌入式Redis服务器,例如H2内存数据库。我该怎么做?
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @IntegrationTest("server.port:0") @SpringApplicationConfiguration(classes = Application.class) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class MasterIntegrationTest { }
您可以使用嵌入式Redis,例如https://github.com/kstyrc/embedded- redis
调整集成测试的属性,使其指向嵌入式Redis,例如:
spring:
redis: host: localhost port: 6379
实例化仅在测试中定义的组件中的嵌入式redis服务器:
@Component
public class EmbededRedis {
@Value("${spring.redis.port}") private int redisPort; private RedisServer redisServer; @PostConstruct public void startRedis() throws IOException { redisServer = new RedisServer(redisPort); redisServer.start(); } @PreDestroy public void stopRedis() { redisServer.stop(); }
}