【发布时间】:2017-10-11 15:00:02
【问题描述】:
对于我创建的这个 MovieForm 类:
public class MovieForm {
private String movieName;
@Min(1)
@Max(31)
@NotNull
private Integer maxNumberOfTickets;
}
我创建了这个单元测试来测试我的表单的验证注释。
public class MovieFormTest {
private static ValidatorFactory validatorFactory;
private static Validator validator;
@BeforeClass
public static void createValidator() {
validatorFactory = Validation.buildDefaultValidatorFactory();
validator = validatorFactory.getValidator();
}
@AfterClass
public static void close() {
validatorFactory.close();
}
@Test
public void form_test() {
MovieForm form = new MovieForm();
form.setMaxNumberOfTickets(null);
Set<ConstraintViolation<MovieForm>> violations = validator.validate(form);
Assert.assertFalse(violations.isEmpty());
ConstraintViolation<MovieForm> violation = violations.iterator().next();
Assert.assertEquals("may not be null", violation.getMessage());
form.setMaxNumberOfTickets(32);
violations = validator.validate(form);
Assert.assertFalse(violations.isEmpty());
violation = violations.iterator().next();
Assert.assertEquals("must be less than or equal to 31", violation.getMessage());
form.setMaxNumberOfTickets(0);
violations = validator.validate(form);
Assert.assertFalse(violations.isEmpty());
violation = violations.iterator().next();
Assert.assertEquals("must be greater than or equal to 1", violation.getMessage());
form.setMaxNumberOfTickets(15);
violations = validator.validate(form);
Assert.assertTrue(violations.isEmpty());
}
但是只有当我在我的 pom 中添加这个 glassfish 依赖项时,这个测试才有效
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b08</version>
</dependency>
否则我会收到 HV000183: Unable to initialize 'javax.el.ExpressionFactory'. 错误。但是我的同事不希望我使用这个依赖项,因为我们正在使用 WebSphere,所以我的问题是:有没有办法让这个单元测试工作而不必使用那个依赖项?
【问题讨论】:
-
您可以将
<scope>test</scope>添加到您的依赖项中。
标签: java maven unit-testing websphere