やること
Bean
を遅延初期化することで起動を高速化するlazy-initialization
オプションですが、SpringBootTest
の高速化にも有効です。
一方、ただlazy-initialization
を有効にするだけではテストで初期化されないBean
が出てしまい、最悪デプロイしてみて初めて初期化エラーに気付くことになります。
そこで、全てのBean
が正常に初期化されるかだけを確認するテストを作ります。
やり方
-
@SpringBootTest(properties = ["spring.main.lazy-initialization=false"])
を特定のテストクラスに付ければできる -
Spring Initializr
で追加される...ApplicationTests
に付与するのが良さげに思える
サンプルコード(KotlinですがJavaでもそう変わりません)
import org.junit.jupiter.api.Test
import org.springframework.boot.test.context.SpringBootTest
@SpringBootTest(properties = ["spring.main.lazy-initialization=false"])
class FooApplicationTests {
@Test
fun contextLoads() {
}
}
解説
やっていることは別記事でまとめています。
また、この記事ではSpringBootTest
の引数を設定する以外の方法についても触れています。
付与先を...ApplicationTests
にしているのは、単に1アプリケーションに1つ存在するテストだからで、特に深い理由は有りません。