私は、プログラムでフォームを検証するために使用する単純な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)