hibernate验证器4.2.0最终@CreditCardNumber

时间:2011-06-22 13:54:16

标签: unit-testing validation credit-card hibernate-validator

@Autowired
private Validator validator;

    @Test
        public void testValidateMethodOfPaymentBadCreditCard() {
            final MethodOfPayment mop = new MethodOfPayment();
            command.setDescription("1234567890");
            final Set<ConstraintViolation<MethodOfPayment>> constraintViolations = this.validator.validateProperty(mop, "cardNumber", Default.class);
            Assert.assertFalse(constraintViolations.isEmpty());
            for (final ConstraintViolation<MethodOfPayment> cv : constraintViolations) {
                Assert.assertEquals(cv.getMessage(), "{error.invalid.cardNumber}");
            }
        }

单元类在我的xml中有define的实例。

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

我的方法付款用

注释
@CreditCardNumber(message="{error.invalid.cardNumber}")
    public String getCardNumber() {
        return this.cardNumber;
    }

此测试在线失败,说约束违规为空。我认为它不应该是空的吗?

有什么问题? 什么样的数据无法进行信用卡验证?

1 个答案:

答案 0 :(得分:0)

null被视为Bean Validation和Hibernate Validator中定义的大多数约束的有效值。

因此,如果您没有为cardNumber属性赋值或使用@NotNull注释它,则不会出现约束违规(顺便说一句。您的列表似乎有点奇怪,{ {1}}来自?)

command的验证程序使用Luhn algorithm检查信用卡号。