0
@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 中有定义的实例。

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

我的付款方式注释为

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

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

怎么了?哪些数据无法通过信用卡验证?

4

1 回答 1

0

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

因此,如果您不为cardNumber属性分配值或使用注释@NotNull(顺便说一句。您的列表似乎有点奇怪,它command来自哪里?) ,您将不会违反约束。

验证器@CreditCardNumber使用Luhn 算法检查信用卡号码。

于 2011-06-22T20:04:30.373 回答