我正在使用redis的spring會話,但我想在執行測試時禁用它。我的類註釋:在集成測試中禁用與redis的彈簧會話
@ActiveProfiles("integrationtests")
和我的應用程序integrationtests.tml文件包含:
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
,但它仍然失敗:
Caused by: org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
,如果我把測試工作的Redis服務器但是當然我不想保持這種方式; )
// 更新
我一直都試圖與
@SpringBootTest(classes = {Application.class})
@ActiveProfiles("integrationtests")
和Application.class與排除的Redis:
@SpringBootApplication(exclude={SessionAutoConfiguration.class, RedisAutoConfiguration.class, RedisHttpSessionConfiguration.class})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
,但它失敗:
Error creating bean with name 'redisMessageListenerContainer' defined in class path resource [org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.class]
彈簧自動配置調試看到伊夫排除這個類,但它沒有任何效果:
Exclusions:
-----------
org.springframework.boot.autoconfigure.session.SessionAutoConfiguration
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration
IVe的解決辦法在這裏它:http://stackoverflow.com/questions/ 33008798/spring-session-with-redis-how-to-mock-it-in-integration-tests/36203419#36203419,但主要問題依然存在 - 爲什麼排除redis類不排除它們? :) – freakman
因爲知道在測試過程中總是有一個redis實例很難做準備,所以我建議你爲你的測試用例使用'spring.session.store-type = hash_map'屬性 – imarchuang