我只是想为 User 类编写一个测试来检查验证。我想知道没有任何内容按照注释进行验证。
@Entity
public class User {
@Id
@NotBlank
@Size(min = 2, max = 255)
private String username;
@NotBlank
@Column(length = 60)
private String password;
public User(String username, String password) {
this.username = username.trim();
this.password = password;
}
}
现在我正在尝试这个:
User user2 = new User("admin", "");
User user3 = new User("", "test");
User user4 = new User("", "");
我假设了一些异常(exception),但什么也没有。
- 那么有没有办法测试这些注释?
- 这些验证何时启动?
最佳答案
So is there a way to test these annotations?
是的,您需要 javax.validation.Validator
执行验证的实例:
// obtain a validator
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
// do a test
Set<ConstraintViolation<User>> constraintViolations = validator.validate(user2);
Assert.assertEquals(0, constraintViolations.size());
And when are those validations fired up?
他们可能会在不同层面上被激发。
例如,Spring 可以将 Controller 层上的验证(当请求到来时)与 @javax.validation.Valid
集成起来。 。或者,您可以在将数据发送到数据库之前放置一个 validator 来引发异常。
关于java - 什么时候使用验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49651651/