【发布时间】:2015-08-07 09:04:11
【问题描述】:
我有一个看起来像这样的 Spring RestController:
...
import javax.validation.Valid;
...
@RestController
@RequestMapping( value = "/users", consumes = { MediaType.APPLICATION_JSON }, produces = { MediaType.APPLICATION_JSON })
public class UserController
{
@Autowired
private UserService userService;
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody User add(@RequestBody @Valid User user)
{
...
}
...
}
PS:@Valid 在用户旁边:这就是我的问题所在。
这是对控制器的测试之一:
@ContextConfiguration(classes = { TestAppConfig.class, PersistenceConfig.class }, loader = AnnotationConfigWebContextLoader.class)
@WebAppConfiguration
public class UserControllerTest extends AbstractTestNGSpringContextTests
{
@Autowired
private UserController userController;
@Test
public void addTest()
{
User user = new User();
...
userController.add(user);
...
}
}
TestAppConfig 看起来像这样:
@Configuration
@ComponentScan(basePackages = {Constants.BEANS_BASE_PACKAGE})
@PropertySource(value = { "classpath:application.properties" })
@EnableAspectJAutoProxy
@EnableWebMvc
class TestAppConfig extends WebMvcConfigurerAdapter
{
}
问题:@Valid 以外的所有内容都可以正常工作(调用服务)。这里,@Valid 是我希望用于简单验证的javax.validation.Valid 注释(实现 = Hibernate Bean Validator)。但是,在我的测试期间,我没有看到验证发生。但是,当我调用服务调用时,它们确实会发生。我可能会错过什么?
【问题讨论】:
标签: spring spring-mvc testng hibernate-validator spring-test-mvc