Java 弹簧控制器没有';无法在控制器测试中找到模板

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' 我不确定我是否配置了错误的东西 测试用例中的错误消失

我正在使用SpringBootStarterWeb、SpringBootStarterTest和SpringBootStarterGroovy模板(1.2.0.M1)

我正在尝试用spring boot构建一个小应用程序。我用mockito为mvc控制器编写了测试。如果使用maven运行这些测试,则每个控制器测试都会出现以下错误:

Servlet Could not resolve view with name 'persons/list'
我不确定我是否配置了错误的东西

测试用例中的错误消失:

  • 如果我将spring boot starter父版本更改为1.1.7.0版本
  • 如果我使用组件扫描并将服务bean初始化为一个完整的bean
我已设置了一个示例项目,其中出现了与我的应用程序中相同的错误:

我错过了什么?提前谢谢

  • 您的
    应用程序.properties
    为空
  • 什么代表“人员/列表”?jsp文件?平铺视图名称?您需要配置
    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
    ,一旦您将所有测试都设置为绿色,您需要在生产中工作..我说的对吗?