概要
今回は単体テスト実施時にバリデーションの検証を行ったため、方法について調べたことをサンプルと合わせて説明する。
バリデーションの単体テスト方法バリデーションが付与さてれているbean(form)クラスの入力チェックを行う。
バリデーションが付与さてれているbeanクラスを以下に示す。
@Data
class TestBean {
@NotNull(message = "not null!!")
private String name;
}
入力チェックを検証を行う方法を以下のサンプルに示す。
@Test
public void violationTest() {
// 設定
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();<!--1-->
Validator validator = factory.getValidator();<!--1-->
TestBean bean = new TestBean();
bean.setName("name");
Set<ConstraintViolation<TestBean>> violations = validator.validate(bean);<!--2-->
assertThat(violations).isEmpty();<!--3-->
}
1.validate
メソッドを使った入力チェックを可能にするためにValidator
を取得する。
2.validate
メソッドを使い入力チェックを行う。
入力チェックエラーの数だけConstraintViolation
のSet
が返ってくる。
3.(2)で取得したSet
からエラーが発生したかを検証する。
(2)で取得したSet
にエラーが格納されていた場合Set
に格納されたエラーの数、違反したフィールド、違反した入力値、発生したエラーのメッセージを検証する。
検証方法のサンプルを以下に示す。
assertThat(violation.getPropertyPath().toString(), is("name"));<!--4-->
assertThat((String) violation.getInvalidValue(), is(null));<!--5-->
assertThat(violation.getMessage(), is("not null!!"));<!--6-->
4.違反したフィールドが想定したものかを検証。
5.違反した入力値が想定したものかを検証。
6.発生したエラーのメッセージの検証。
- 閲覧数 1523
コメントを追加