LoginSignup
1
0

More than 3 years have passed since last update.

SpringBootでテスト時にRedisを動作させない

Posted at
  • Spring Boot 2.1.8.RELEASE
  • JUnit 5.5.2

SpringBootでRedisを使用しているがTestでRedisを動作させたくない。

RedisAutoConfigurationRedisRepositoriesAutoConfigurationを除外する。
Spring Data's reactive Redisを使用しているならRedisReactiveAutoConfigurationも対象。

当然RedisTemplateStringRedisTemplateは登録されなくなるので、テスト時は別途用意する。

除外方法

@EnableAutoConfigurationexcludeする。

@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 {
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0