2014-10-05 128 views
0

我正在使用spring-boot-starter-web,spring-boot-starter-test和spring-boot-starter-groovy-templates(1.2.0.M1)。弹簧控制器在控制器测试中找不到模板

我正试图用spring引导来构建一个小应用程序。我用mockito为mvc控制器写了测试。如果我使用Maven运行这些测试,我得到以下错误每个控制器测试:

Servlet Could not resolve view with name 'persons/list' 

我不知道我是否已经配置了一些错误。

在测试用例的错误消失:

  • 如果我的版本改为弹簧引导启动父
  • 的1.1.7.RELEASE如果我使用组件扫描和initalize的服务bean作为一个完整的豆

我已经安装上发生像在我的应用程序相同的错误的示例项目: https://github.com/waldemar-schneider/spring-boot-mvc-test

我在想什么?在此先感谢

+0

如果您具有可重现性测试用例,在GitHub上针对Spring Boot提出错误。 – chrylis 2014-10-05 21:48:33

回答

0
  1. application.properties是空
  2. 什么代表'persons/list'?一个jsp文件?一个瓷砖视图名称?你需要配置application.properties
  3. 考虑这样的事情

application.properties

+0

只有使用@EnableAutoConfiguration时,application.properties文件才是相关的。正如我在其他评论中提到的,我不想为了运行mvc控制器的单元测试而创建整个jpa堆栈(和其他功能)。我想我并没有详细描述我的问题,对此抱歉。但感谢您的想法 – 2014-10-06 19:53:02

+0

我明白,但只是好奇,如果您添加'@ EnableAutoConfiguration',一旦您的所有测试均为绿色,您需要在生产环境中工作。我正确吗? – 2014-10-06 21:06:35

1

您还没有启用自动配置,这些会用来通过PersonControllerTest的配置,这意味着它的Groovy模板支撑春天启动的自动配置不会发生。要解决该问题,请将@EnableAutoConfiguration添加到ControllerTestConfig

它实际上并没有与1.1.7.RELEASE一起工作,但它的失败方式与您的测试无法识别的方式不同。

如果您更新的测试也叫MockMvcResultHandlers.print()

… 
MockHttpServletResponse: 
      Status = 200 
    Error message = null 
     Headers = {Content-Type=[text/html;charset=UTF-8]} 
    Content type = text/html;charset=UTF-8 
      Body = 
    Forwarded URL = null 
    Redirected URL = null 
     Cookies = [] 

如果添加@EnableAutoConfiguration如上所述:

mockMvc.perform(get("/persons/")); 
    .andDo(print()) 
    .andExpect(status().isOk()) 
    .andExpect(view().name("persons/list")) 
    .andExpect(model().attribute("persons", hasSize(1))); 

你会在响应具有空体输出看到,响应将包含预期的HTML:

… 
MockHttpServletResponse: 
      Status = 200 
    Error message = null 
     Headers = {Content-Type=[text/html;charset=UTF-8]} 
    Content type = text/html;charset=UTF-8 
      Body = <!DOCTYPE html><html class='no-js' lang='en'><head></head><body><h2>Person list</h2><table><thead><tr><th>Name</th><th>Surname</th></tr></thead><tr><td/><td/></tr></table></body></html> 
    Forwarded URL = null 
    Redirected URL = null 
     Cookies = [] 
+0

感谢提示。我没有看到。 但是我不想使用@EnableAutoConfiguration,因为我不想为了mvc控制器的单元测试初始化​​整个jpa栈。我查看了groovy标记模板视图解析器的初始化,并找到了一个工作解决方案。我从spring引导中导入了两个配置类。如果你有兴趣,你可以在github存储库中看到结果。 – 2014-10-06 19:38:08