@Autowired in WebApplicationContext Spring MVC Tests不起作用

时间:2013-05-21 11:15:45

标签: spring spring-mvc

我正在尝试在我的spring mvc控制器中进行测试,而我的applicationContext始终为null。

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.test.context.web.WebAppConfiguration
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.ResultActions
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import org.springframework.web.context.WebApplicationContext
import spock.unitils.UnitilsSupport

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status

@UnitilsSupport
@WebAppConfiguration
//@ContextConfiguration(classes=Config.class)
//@ContextConfiguration(loader= ApplicationContextProvider.class)
class TimeSheetControllerIt extends TestsSupport {

    @Autowired
    private WebApplicationContext webApplicationContext; //NULL

    //private MockHttpServletRequest mockHttpServletRequest;
    private MockMvc mockMvc
    private ResultActions resultActions

    def setup(){
        //this.mockHttpServletRequest = new MockHttpServletRequest();
        this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

我该怎么办?

2 个答案:

答案 0 :(得分:0)

尝试提供上下文配置(您已注释的@ContextConfiguration)。

检查日志以查看您的应用程序上下文是否已正确初始化。

答案 1 :(得分:0)

您尚未提供任何上下文配置位置。因此,spring不会定位文件,从中可以创建bean并在需要的地方注入。

请记住,主应用程序和测试的上下文配置位置是不同的。因此,即使您在web.xml中指定了它,它的范围也不包括测试。您必须在测试类中明确指定它。