SpringBootでテスト時にRedisを動作させない
- Spring Boot 2.1.8.RELEASE
- JUnit 5.5.2
SpringBootでRedisを使用しているがTestでRedisを動作させたくない。
RedisAutoConfiguration
とRedisRepositoriesAutoConfiguration
を除外する。
Spring Data's reactive Redisを使用しているならRedisReactiveAutoConfiguration
も対象。
当然RedisTemplate
やStringRedisTemplate
は登録されなくなるので、テスト時は別途用意する。
除外方法
@EnableAutoConfiguration
でexclude
する。
@SpringBootTest
@EnableAutoConfiguration(exclude = {
RedisAutoConfiguration.class,
RedisRepositoriesAutoConfiguration.class
})
class MyTest {
@SpringBootTest
は既にAutoConfigurationは有効だが、@EnableAutoConfiguration
を明示するとその設定が優先される。
アノテーションを作る
全てのテストで個別に指定するとクラスのアノテーションがうるさくなる。メタアノテーションの機能を使用し、アノテーションを作っておく。
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@SpringBootTest
@EnableAutoConfiguration(exclude = {
RedisAutoConfiguration.class,
RedisRepositoriesAutoConfiguration.class
})
public @interface MySpringBootTest {
}
テストクラスはこうなる。
@MySpringBootTest
class MyTest {
Author And Source
この問題について(SpringBootでテスト時にRedisを動作させない), 我々は、より多くの情報をここで見つけました https://qiita.com/nononote/items/609dda508cfb285fefd2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .