2017-10-11 51 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了。

相關問題