有没有办法单元测试验证注释而不必使用glassfish的依赖关系?
问题描述:
为我创造了这个MovieForm类:有没有办法单元测试验证注释而不必使用glassfish的依赖关系?
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
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b08</version>
</dependency>
否则我得到添加此GlassFish的依赖只能一个HV000183:无法初始化 'javax.el.ExpressionFactory'。错误。但是我的同事不希望我使用这种依赖关系,因为我们正在使用WebSphere,所以我的问题是:有没有办法让这个单元测试工作而无需使用该依赖关系?
答
测试范围与此配置文件中启用创建具有这种依赖性的Maven配置文件(如阿拉约尔在他的评论中所建议的)
<profiles>
<profile>
<id>validation-test</id>
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b08</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
</profiles>
运行测试。 如果需要测试与任何其他实施只是一个新的配置文件
当然,在您需要添加或者一些相应的验证的API或使用WebSphere实现为依赖构建阶段,并与<scope>provided</scope>
如果部署到容器具有IMPL了。
您可以将' test '添加到您的依赖项中。 –
alayor