1

Hibernate ツールによって生成される一連のエンティティ クラスがあります。すべてに次のような @Column 注釈があります。

@Column(name = "CNTR_DESCRIPTION", nullable = false, length = 5)
public String getDescription() {
    return this.description;
}

データベースへの入力を検証する JUnit テストを作成したいのですが、JUnit による検証は次を追加した場合にのみ機能します。

@NotNull
@Size(max = 5)
@Column(name = "CNTR_DESCRIPTION", nullable = false, length = 5)
public String getDescription() {
    return this.description;
}

自動生成されたエンティティ クラスを変更する必要があるため、注釈を追加しないことを好みます。最初に生成された @Column アノテーションで JUnit テストを動作させるにはどうすればよいですか? ありがとう!

私の JUnit テスト (@Column だけでは機能しませんが、追加の @NotNull および @Size では機能します):

public class CountryEntityTest {プライベート静的バリデータバリデータ。

@BeforeClass
public static void setUp() {
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    validator = factory.getValidator();
}

@Test
public void countryDescriptionIsNull() {
    CountryEntity country = new CountryEntity();
    country.setDescription(null);
    Set<ConstraintViolation<CountryEntity>> constraintViolations = validator.validate( country );
    assertEquals( 1, constraintViolations.size() );
    assertEquals( "may not be null", constraintViolations.iterator().next().getMessage() );
}

@Test
public void countryDescriptionSize() {      

    CountryEntity country = new CountryEntity();
    country.setDescription("To long");

    Set<ConstraintViolation<CountryEntity>> constraintViolations = validator.validate( country );

    assertEquals( 1, constraintViolations.size() );
    assertEquals( "size must be between 0 and 5", constraintViolations.iterator().next().getMessage());
}

}

4

1 に答える 1

2

@Column の制約は検証を目的としていないと思います。DDL の生成に使用されます。したがって、目標を達成するには Hibernate-Validator アノテーションを追加する必要があります。

この投稿を参照してください。

于 2013-07-31T08:43:36.983 に答える