【发布时间】:2023-03-26 02:22:01
【问题描述】:
我有以下单元测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {EqualblogApplication.class})
@WebAppConfiguration
@TestPropertySource("classpath:application-test.properties")
public class PostServiceTest {
// ...
@Test(expected = ConstraintViolationException.class)
public void testInvalidTitle() {
postService.save(new Post()); // no title
}
}
PostService 中save 的代码是:
public Post save(@Valid Post post) {
return postRepository.save(post);
}
Post 类在大多数字段中都标有@NotNull。
问题是:没有抛出验证异常。
但是,这只发生在测试中。 使用应用程序正常运行验证并抛出异常。
注意:我想自动(保存时)而不是手动验证然后保存(因为它更现实)。
【问题讨论】:
-
该解决方案只提供了一种编程方法。:validator.validateProperty(object, propertyName) 我想要在保存时进行隐式验证
-
@Inject MockMvc mvc;的解决方案对我来说看起来不错? -
好吧,我不确定 spring 中的哪个组件负责处理验证。您可以测试验证本身,但您可能需要一个集成测试(完全部署)来测试是否处理了 @valid。如需测试验证结果,请参阅jmdoudoux.fr/java/dej/chap-validation_donnees.htm 的示例§101.2.1.5
-
你可能想了解一下
MethodValidationPostProcessor
标签: java spring junit spring-boot hibernate-validator