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にdefineのインスタンスがあります。

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

私の支払い方法には注釈が付けられています

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

このテストは、制約違反が空であるとオンラインで失敗します。空になってはいけないと思いましたよね?

なにが問題ですか?クレジットカードの検証に失敗するデータの種類は何ですか?

4

1 に答える 1

0

nullBeanValidationおよびHibernateValidatorで定義されているほとんどの制約の有効な値と見なされます。

cardNumberしたがって、プロパティに値を割り当てたり、プロパティに注釈を付けたりしない場合、制約違反は発生しません@NotNull(ところで、リストは少し奇妙に見えますが、どこcommandから来たのですか?)

のバリデーター@CreditCardNumberは、Luhnアルゴリズムを使用してクレジットカード番号をチェックします。

于 2011-06-22T20:04:30.373 に答える