【问题标题】:Spring: Testing view-controllers created with ViewControllerRegistry.addViewController()Spring:测试使用 ViewControllerRegistry.addViewController() 创建的视图控制器
【发布时间】:2016-05-18 12:48:57
【问题描述】:

这是我第一次进行junit测试,如果这是一个愚蠢的问题,请原谅我。我希望测试的 Spring Web 应用程序中的类如下。该类扩展了 WebMcvConfigurerAdapter 以添加视图控制器。

我只想测试每个视图控制器是否映射到正确的视图。在我看过的每个教程中,测试都是针对具有自己独立类的控制器进行的。下面的控制器拥有自己的类是没有意义的,因为它们不涉及任何逻辑。谁能指导我如何处理这个问题或提供示例代码?像这样只链接到视图的控制器是否需要测试?

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("greeting");
    registry.addViewController("/portal").setViewName("portal");
    registry.addViewController("/login").setViewName("login");
}

}

【问题讨论】:

    标签: java spring junit controller


    【解决方案1】:

    这取决于您正在实施的测试类型。对于单元测试,它不是必需的,因为您将测试 Spring 内部工作。但是,对于集成测试,它是必要的,以便您可以检查您的应用程序是否正确连接。

    您的视图控制器的集成测试示例可以是

    @RunWith(SpringJunitClassRunner.class)
    @ContextConfiguration(classes = MvcConfig.class)
    public class ViewControllerIT{
    
       @Autowired
       private WebApplicationContext wac;
    
       @Before
        public void setup() {
            this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
        }
    
        @Test
        public void testLogin() throws Exception {
            this.mockMvc.perform(get("/login")
            .andExpect(status().isOk())
            .andExpect(view().name("login"));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      相关资源
      最近更新 更多