- 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 {