Spring Boot外部化配置可以应用javax验证,该验证在启动时会出错。我想写一些自动化的东西,例如验证验证是否按预期工作的JUnit测试–在启动时引发BindingException违规。
例如
@ConfigurationProperties(prefix="acme")
@Validated
public class AcmeProperties {
@NotBlank
private String remoteAddress;
// ... getters and setters
}
我希望使用以下简单的东西进行测试:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@TestPropertySource(properties = "acme.remoteAddress=")
public class ValidatedBindingExceptionTest {
@Autowired
AcmeProperties acmeProperties;
@Test(expected = BindException.class)
public void bindingException() {
}
}
由于至少两个原因,此方法不起作用。 1.由于稍后混合了TestProperty,因此BindingException永远不会发生。 2 BindingException会在ApplicationContext初始化时发生,因此必须在测试可以运行之前。
我觉得以某种方式验证此基本功能很重要,因为随着时间的流逝,出于多种原因,它可能会被意外禁用/删除。有人对如何测试有任何建议吗?