首页 > 解决方案 > @Valid Annotations 在测试 Spring Boot 服务时无法从 Junit 5 和 mockito 工作

问题描述

我很难使用 Jnit 5 设置正确的验证注释以从 Spring Boot 服务进行测试

服务接口

@Validated
public interface UsersQueryService {

     Users getById(@ValidIdentifier Long id);
    
}

单元测试

@Test
void getById_invalid_id() {
    assertThrows(UsersException.class, () -> {
        Long invalid_id = 0l;
        usersService.getById(invalid_id);
    });
}

我试图通读很多帖子,但所有帖子都涵盖了实现并且与我的用例不匹配。在一篇博客中,我找到了以下代码来注册方法验证后处理器,但这也不起作用。请提出正确的方法来让它工作

@TestConfiguration
    static class MethodValidationConfig {
        @Bean
        public MethodValidationPostProcessor bean() {
            return new MethodValidationPostProcessor();
        }
    }

注意:我只做服务测试,因此不验证请求流

@ExtendWith(SpringExtension.class)
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)
class UsersQueryServiceTests

标签: javaspringspring-bootvalidation

解决方案


推荐阅读