Spring Boot で本番環境向けの @ConfigurationProperties をテストする
開発環境向けの @ConfigurationProperties
はテストしていたのだが、本番環境向けも内容を手元や CI で検証したくなったので調べた。結論としては、以下のページの方法に従ったらできた。
@RunWith(SpringRunner.class)@SpringBootTest(classes = { MyConfigurationPropertiesTest_1.TestConfiguration.class })@ActiveProfiles("happy-path")public class MyConfigurationPropertiesTest_1 {
@Autowired private MyConfigurationProperties properties;
@Test public void should_Populate_MyConfigurationProperties() { assertThat(properties.getSomeMandatoryProperty()).isEqualTo("123456"); assertThat(properties.getSomeOptionalProperty()).isEqualTo("abcdef"); assertThat(properties.getSomeDefaultProperty()).isEqualTo("overwritten"); }
@EnableConfigurationProperties(MyConfigurationProperties.class) public static class TestConfiguration { // nothing }}
MyConfigurationProperties
を @EnableConfigurationProperties
した configuration class をテスト用に定義して、それを @SpringBootTest
の classes
に指定してやれば、特定の @ConfigurationProperties
だけを読み込むテストを書ける。あとは、@ActiveProfiles
で読み込みたい profile を指定してやればよい。
いざ本番リリースしようとしたら設定ファイルの記述をミスっていて立ち上がらない、みたいなのを防げて便利。