我有一个类Article
,它有一个ean
字段,该字段用org.hibernate.validator.constraints.EAN
注释。
如何生成有效的 ean13 值来对一堆 Article
进行单元测试?
最佳答案
请在下面找到一个测试有效/无效 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 需要表达式语言依赖。
关于java - 用于 Java 单元测试的 EAN13 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33456833/