2017-10-11 53 views
2

为我创造了这个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.E​​xpressionFactory'。错误。但是我的同事不希望我使用这种依赖关系,因为我们正在使用WebSphere,所以我的问题是:有没有办法让这个单元测试工作而无需使用该依赖关系?

+0

您可以将' test'添加到您的依赖项中。 – alayor

回答

0

测试范围与此配置文件中启用创建具有这种依赖性的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了。

相关问题