Java 弹簧控制器没有';无法在控制器测试中找到模板
我正在使用SpringBootStarterWeb、SpringBootStarterTest和SpringBootStarterGroovy模板(1.2.0.M1) 我正在尝试用spring boot构建一个小应用程序。我用mockito为mvc控制器编写了测试。如果使用maven运行这些测试,则每个控制器测试都会出现以下错误:Java 弹簧控制器没有';无法在控制器测试中找到模板,java,spring,spring-mvc,spring-boot,spring-test,Java,Spring,Spring Mvc,Spring Boot,Spring Test,我正在使用SpringBootStarterWeb、SpringBootStarterTest和SpringBootStarterGroovy模板(1.2.0.M1) 我正在尝试用spring boot构建一个小应用程序。我用mockito为mvc控制器编写了测试。如果使用maven运行这些测试,则每个控制器测试都会出现以下错误: Servlet Could not resolve view with name 'persons/list' 我不确定我是否配置了错误的东西 测试用例中的错误消失
Servlet Could not resolve view with name 'persons/list'
我不确定我是否配置了错误的东西
测试用例中的错误消失:
- 如果我将spring boot starter父版本更改为1.1.7.0版本
- 如果我使用组件扫描并将服务bean初始化为一个完整的bean
应用程序.properties
为空application.properties
您尚未在
PersonControllerTest
使用的配置中启用自动配置,这意味着Spring Boot不会自动配置其Groovy模板支持。要解决此问题,请将@EnableAutoConfiguration
添加到ControllerTestConfig
它在1.1.7.RELEASE中也没有真正起作用,但是它以一种不同的方式失败了,而您的测试并没有发现这一点
如果将测试更新为同时调用MockMvcResultHandlers.print()
:
mockMvc.perform(get(“/persons/”);
.andDo(print())
.andExpect(状态().isOk())
.andExpect(视图().name(“人员/列表”))
.andExpect(model().attribute(“persons”,hasSize(1)));
您将在输出中看到响应的主体为空:
…
MockHttpServletResponse:
状态=200
错误消息=null
Headers={Content Type=[text/html;charset=UTF-8]}
内容类型=文本/html;字符集=UTF-8
正文=
转发的URL=null
重定向的URL=null
Cookies=[]
如果如上所述添加@EnableAutoConfiguration
,则响应将包含预期的HTML:
…
MockHttpServletResponse:
状态=200
错误消息=null
Headers={Content Type=[text/html;charset=UTF-8]}
内容类型=文本/html;字符集=UTF-8
Body=人员列表名称
转发的URL=null
重定向的URL=null
Cookies=[]
如果您有一个可复制的测试用例,请在GitHub上针对Spring Boot提交一个bug。谢谢您的提示。我没看到。但是,我不想使用@EnableAutoConfiguration,因为我不想仅仅为了mvc控制器的单元测试而初始化整个jpa堆栈。我查看了groovy标记模板视图解析器的初始化,找到了一个有效的解决方案。我从spring boot导入了两个配置类。如果您感兴趣,可以在github存储库中查看结果。application.properties文件仅在您使用@EnableAutoConfiguration时才相关。正如我在另一篇评论中提到的,我不想初始化整个jpa堆栈(和其他特性),只是为了运行mvc控制器的单元测试。我想我在问题中没有详细描述我的问题,对此我很抱歉。但是感谢您的想法我理解,但我只是好奇如果您添加@EnableAutoConfiguration
,一旦您将所有测试都设置为绿色,您需要在生产中工作..我说的对吗?