DB接続の自動構成を解除してSpringBootTestの単体テストを通す
Spring Bootでテストコードを書く。
テストクラスに@SpringBootTestを付与すればよいということだった。
DBが停止しているときにLocalContainerEntityManagerFactoryBeanの初期化に失敗した。
Web記事を血眼で探した。
DBを利用したテストについての記事ばかり。
的を得たものはほとんどなかった。
結果的になんとかなった。
下記2つの記事の合わせ技だ。
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の設定値で自動構成してくれている反面、
設定を読み込む部分が隠蔽され、
どこに手を入れればよいかがわかりづらくなっているのだ。
それにしても、みんなハマるはずだが記事が少ないのが不思議だ。
という思いがあって書き残しておく。