java对象校验框架_JAVA⾼效编程九(验证框架)/**
* 验证测试类
*/
public class ValidationTest {
// 验证器对象
private Validator validator;
// 待验证对象
private UserInfo userInfo;
// 验证结果集合
private Set> set;
// 验证结果集合
private Set> otherSet;
/**
* 初始化操作
*/
@Before
public void init() {
validation框架// 初始化验证器
validator = Validation.buildDefaultValidatorFactory()
.getValidator();
// 初始化待验证对象 - ⽤户信息
userInfo = new UserInfo();
/
/ userInfo.setUserId("zhangxiaoxi");
userInfo.setUserName("张⼩喜");
userInfo.setPassWord("zhangxiaoxi");
// userInfo.setEmail("zhangxiaoxi@sina");
userInfo.setAge(30);
Calendar calendar = Instance();
calendar.set(2012, 1, 1);
userInfo.Time());
userInfo.setPhone("158********");
UserInfo friend = new UserInfo();
// friend.setUserId("wangxiaoxi");
friend.setUserName("王⼩喜");
friend.setPassWord("wangxiaoxi");
// friend.setEmail("wangxiaoxi@sina");
friend.setPhone("158********");
userInfo.setFriends(new ArrayList(){{add(friend);}}); }
/**
* 结果打印
*/
@After
public void print() {
set.forEach(item -> {
/
/ 输出验证错误信息
System.out.Message());
});
}
@Test
public void nullValidation() {
// 使⽤验证器对对象进⾏验证
set = validator.validate(userInfo);
}
/**
* 级联验证测试⽅法
*/
@Test
public void graphValidation() {
set = validator.validate(userInfo);
}
/**
* 分组验证测试⽅法
*/
@Test
public void groupValidation() {
set = validator.validate(userInfo,
UserInfo.RegisterGroup.class,
UserInfo.LoginGroup.class);
}
/**
* 组序列
*/
@Test
public void groupSequenceValidation() {
set = validator.validate(userInfo,
UserInfo.Group.class);
}
/
**
* 对⽅法输⼊参数进⾏约束注解校验
*/
@Test
public void paramValidation() throws NoSuchMethodException { // 获取校验执⾏器
ExecutableValidator executableValidator =
validator.forExecutables();
// 待验证对象
UserInfoService service = new UserInfoService();
// 待验证⽅法
Method method = Class()
.
getMethod("setUserInfo", UserInfo.class);
// ⽅法输⼊参数
Object[] paramObjects = new Object[]{new UserInfo()};
// 对⽅法的输⼊参数进⾏校验
otherSet = executableValidator.validateParameters(
service,
method,
paramObjects);
}
/**
* 对⽅法返回值进⾏约束校验
*/
@Test
public void returnValueValidation()
throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
// 获取校验执⾏器
ExecutableValidator executableValidator =
validator.forExecutables();
// 构造要验证的⽅法对象
UserInfoService service = new UserInfoService(); Method method = Class()
.getMethod("getUserInfo");
// 调⽤⽅法得到返回值
Object returnValue = method.invoke(service);
// 校验⽅法返回值是否符合约束
otherSet = executableValidator.validateReturnValue( service,
method,
returnValue);
}
/**
* 对构造函数输⼊参数进⾏校验
*/
@Test
public void constructorValidation()
throws NoSuchMethodException {
// 获取验证执⾏器
ExecutableValidator executableValidator =
validator.forExecutables();
// 获取构造函数
Constructor constructor =
UserInfoService.class
.getConstructor(UserInfo.class);
Object[] paramObjects = new Object[]{new UserInfo()};
// 校验构造函数
otherSet = executableValidator .validateConstructorParameters( constructor, paramObjects);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论