きり丸の技術日記

技術・エンジニアのイベント・資格等はこちらにまとめる予定です

【2021】SpringBootでpropertiesやymlの設定ファイルが読み込めることのテストを書く

去年書いた記事で使用していたクラスがDeprecatedになっていたので、新しく更新します。

前回の記事を書いた時にアップデートしておけばよかったです。

変更点

  • ConfigFileApplicationContextInitializer から ConfigDataApplicationContextInitializer に変更
  • 設定ファイルの設定方法が変更(今回の記事には影響なし)

こちらの記事での記載の通り、SpringBoot2.4から設定ファイルの設定方法が変わりました。

ConfigFileApplicationContextInitializer では旧設定で動きますが、この機会に ConfigDataApplicationContextInitializer に変えつつ新設定に変更してみてください。

なお、今回の記事の内容では直接影響はありません。GitHubにはその対応を含めてアップロードしているので、興味があればソースコードも見てください。

ゴール

設定ファイルを読み込めていることを示すテストを書けるようにします。

環境

  • Java
    • 15
  • org.springframework.boot
    • 2.4.4

ソースコード

設定ファイル


下記のディレクトリに、設定ファイルを記載します。 src/test/resources/application.yml

app:
  config:
    appName: "Kirimaru"

設定ファイルを読み込むJavaファイル


ConfigurationPropertiesアノテーションを使用します。prefixをつけることで、特定の階層以降を読み込むことができるので、可読性が上がるのでオススメです。

下記ディレクトリにJavaファイルを格納する。 {ContextRoot}/config/CoreProperties.java

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

@Getter
@Setter
@ConfigurationProperties(prefix = "app.config")
public class CoreProperties {
  private String appName;
}

テストコード


SpringJunitConfigアノテーションと、EnableConfigurationPropertiesアノテーションを使用します。

設定ファイルから読み込ませて、目的通り読み込んでいることを確認する必要があるので、SpringJunitConfigのイニシャライザにConfigDataApplicationContextInitializer.classを指定する必要があります。

また、必要な設定ファイルを読み込ませるために、EnableConfigurationPropertiesに読み込ませたい設定ファイルを指定します。今回の例ではCoreProperties.classです。

{TestのContextRoot}/config/CorePropertiesTests.java

@SpringJUnitConfig(initializers = ConfigDataApplicationContextInitializer.class)
@EnableConfigurationProperties({CoreProperties.class})
class CorePropertiesTests {
  @Autowired
  CoreProperties coreProperties;

  @Test
  void test_01(){
    assertThat(coreProperties.getAppName()).isEqualTo("Kirimaru");
  } 
}

GitHubソースコード

  • 対象ファイル
    • application.yml(activeProfilesにutを指定)
    • application-external-ut.yml(profiles=utで動かしているので、設定値はこちら)
    • TwitterProperties.java
    • TwitterPropertiesTests.java

github.com

終わりに

既に前回の記事の時にはDeperecatedになっていましたが、アップデートしていないと気づけませんね。

旧設定は旧設定で大事ではありますが、バージョンをしっかり明記することで読者に正確な情報を提供できるようにしたいです。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考記事

Baeldung www.baeldung.com

公式ヘルプ github.com

関連記事

SpringBootでpropertiesやymlの設定ファイルが読み込めることのテストを書く【Java】(前回の記事) nainaistar.hatenablog.com

Spring Profilesで環境ごとの設定ファイルを読み込む(SpringBoot2.4の変更も記載) nainaistar.hatenablog.com

f:id:nainaistar:20210328153643p:plain