バリデーションの単体テスト方法

  •  
 
yokoe に投稿

タグ

概要

今回は単体テスト実施時にバリデーションの検証を行ったため、方法について調べたことをサンプルと合わせて説明する。

バリデーションの単体テスト方法

バリデーションが付与さてれている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メソッドを使い入力チェックを行う。
入力チェックエラーの数だけConstraintViolationSetが返ってくる。
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.発生したエラーのメッセージの検証。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。