1

で注釈が付けられArticleたフィールドを持つクラスがあります。eanorg.hibernate.validator.constraints.EAN

一連の s で単体テストを実行するための有効な ean13 値を生成するにはどうすればよいArticleですか?

4

2 に答える 2

2

有効/無効な EAN コードをテストする以下の例を見つけてください。

次のサイトは、有効な EAN 13 コードを取得するために使用されました: http://www.gomaro.ch/lecheck.htm

Barcode4j API にも興味があるかもしれません (たとえば): http://barcode4j.sourceforge.net/

package ean;

import static org.junit.Assert.assertTrue;

import java.util.Set;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

import org.hibernate.validator.constraints.EAN;
import org.junit.Before;
import org.junit.Test;

/**
 * Test EAN 13 constraint. EAN 13 = 12 digits + 1 check digit.
 *
 */
public class testEAN13 {

    private static Validator validator;

    @BeforeClass
    public static void setUp() {
        ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
        validator = vf.getValidator();
    }

    @Test
    public void validEAN() {
        Article product = new Article("7894561330231");
        Set<ConstraintViolation<Article>> violations = validator.validate(product);
        assertTrue(violations.isEmpty());
    }

    @Test
    public void invalidEAN() {
        Article product = new Article("7894561330235");
        Set<ConstraintViolation<Article>> violations = validator.validate(product);
        assertTrue(violations.size() == 1);
    }

    class Article {

        @EAN
        private final String ean;

        private Article(String ean) {
            this.ean = ean;
        }
    }
}

Maven に必要な依存関係:

<dependencies>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.2.2.Final</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>

</dependencies>

注 : Hibernate Validator には式言語の依存関係が必要です。

于 2015-10-31T22:34:38.887 に答える