版本
初始应用程序代码是使用jhipster生成的。
相关的控制器测试标有以下注释。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest
验证程序bean未在测试模式下连线。看起来Web模式中使用的ConstraintFactory
实现是o.s.v.b.SpringConstraintValidatorFactory
,而在测试模式下,使用的实现是o.h.v.i.e.c.ConstraintValidatorFactoryImpl
,它不处理@Inject注释。
Web应用程序使用MySQL作为数据库,而测试使用H2。
如何让测试配置为使用SpringConstraintValidatorFactory?
我已根据以前的问题和解决方案尝试了以下内容。
这不是Hibernate在保存实体时进行的第二次验证。我通过分析调用堆栈来检查这一点。验证器正在从web层触发,并在rest方法上使用@Valid注释。
将此添加到application.yml文件没有帮助。我猜这是用于hibernate保存/更新验证。就我而言,在网络层进行验证。
spring.jpa.properties.javax.persistence.validation.mode =无
感谢。
答案 0 :(得分:0)
所以,在我的情况下,我写了几个需要自动装配的自定义验证器(遵循此https://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-customconstraints.html)。我在@Constraint注释中提供了验证器类,如。
@Constraint(validatedBy = MyCheckValidator.class)
我在标准验证器中看到@NotNull等validatedBy被填充为空数组。
在我的验证器中,我将validatedBy字段更改为{}并且一切都开始工作了。我不知道为什么。
@Constraint(validatedBy = {})
如果有人能够解释更精细的细节,将不胜感激。