spring-boot
でアプリを構築しています。それはのように働いたユニットテストでRedisサーバーへの接続を防止する
spring.redis.host=localhost
spring.redis.password=secret
spring.redis.port=6379
:
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
とapplication.propertiesでそれらの線:スティッキーセッション関連の問題を避けるために、私はpom.xml
でそれらの行を追加することにより、所定の位置にRedisのセッションストアを置きます魅力。私が注釈を使用しなくてもそれがうまくいったことに驚きました@EnableRedisHttpSession
。始めに、私はそれが素晴らしく見つけました。
問題:実際のアプリケーション用のSpring構成と、単体テスト専用のSpring構成があります。 Redis接続は単体テスト環境では役に立たず、テスト環境にRedisサーバーをインストールしないとテストが失敗します。
私は最終的にMaven RedisをMaven依存関係としてインストールすることができますが、この無駄な接続を無効にする方法が見つかった場合は、より洗練されたものになります。
春ブーツの 'SessionAutoConfiguration'がで蹴るあなたのアプリケーションでそれを除外することができます。 ( '@ SpringBootApplication'またはプロパティ)は、[here](https://github.com/pivotal-cla/blob/b35645d709fc4bae31b353eaddbd15374cf2570f/src/main/java/io/pivotal/cla/GithubClaApplication.java)を参照してください。 – mp911de
@ mp911deこれを追加するのは、アプリケーションのconfとtest confの両方に適用する場合のみです。私が手動で '@ EnableRedisHttpSession'をアプリケーションのconfに追加するだけで、それはテスト設定によっても検出されます。あなたは、アプリケーションconf上で '@ EnableRedisHttpSession'を検出するためにテスト環境をどのように防ぐことができるか考えていますか? –
'@Enable ...'アノテーションからの回復はありません。有効になっています。私はプロファイルがここであなたを助けることができると思う。 – mp911de