DB接続の自動構成を解除してSpringBootTestの単体テストを通す

Spring Bootでテストコードを書く。
テストクラスに@SpringBootTestを付与すればよいということだった。
DBが停止しているときにLocalContainerEntityManagerFactoryBeanの初期化に失敗した。

Web記事を血眼で探した。
DBを利用したテストについての記事ばかり。
的を得たものはほとんどなかった。
結果的になんとかなった。
下記2つの記事の合わせ技だ。

stackoverflow.com

stackoverflow.com

src/test/java/配下のどこかに配置

@Configuration
public class DataSourceConfig {
    @Bean
    public DataSource dataSource() {
        return Mockito.mock(DataSource.class);
    }
}

テストクラス

@SpringBootTest
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class HogeTest{
    // テストコード 
}

Spring BootがAutoConfigureを採用しているので、
application.propertiesの設定値で自動構成してくれている反面、
設定を読み込む部分が隠蔽され、
どこに手を入れればよいかがわかりづらくなっているのだ。

それにしても、みんなハマるはずだが記事が少ないのが不思議だ。
という思いがあって書き残しておく。