ユニットテスト中に Spring @Value を設定する 質問する

ユニットテスト中に Spring @Value を設定する 質問する

私は、プログラムでフォームを検証するために使用する単純なBeanのユニットテストを書こうとしています。Beanには注釈が付けられており@Component、クラス変数があり、次のように初期化されます。

@Value("${this.property.value}") private String thisProperty;

このクラス内の検証メソッドの単体テストを記述したいのですが、可能であれば、プロパティ ファイルを使用せずに記述したいと思います。その理由は、プロパティ ファイルから取得する値が変更された場合、それがテスト ケースに影響しないようにするためです。テスト ケースでは、値自体ではなく、値を検証するコードをテストしています。

テスト クラス内で Java コードを使用して Java クラスを初期化し、そのクラス内に Spring @Value プロパティを設定して、それを使用してテストする方法はありますか?

これを見つけた方法近いようですが、それでもプロパティ ファイルを使用します。すべて Java コードにしたいです。

ベストアンサー1

可能であれば、Spring Context を使用せずにこれらのテストを記述します。Spring を使用せずにテストでこのクラスを作成すると、そのフィールドを完全に制御できます。

フィールドを設定するには、@valueスプリングを使用することができますReflectionTestUtils- 方法があるsetFieldプライベートフィールドを設定します。

@見るJavaDoc: ReflectionTestUtils.setField(java.lang.Object, java.lang.String, java.lang.Object)

おすすめ記事