Spring-test意外失败,如何最好地对错误进行三角测量?

时间:2014-04-22 16:29:33

标签: java spring-3 spring-test

这个Spring 3控制器的基本Spring测试给出了响应代码404结果而不是预期的200:

@RunWith(SpringJUnit4ClassRunner.class)
public class RootControllerMvcTest extends AbstractContextControllerTests {

private MockMvc mockMvc;

@Before
public void setup() throws Exception {
this.mockMvc = webAppContextSetup(this.wac)
.alwaysExpect(status().isOk()).build();
}

@Test
public void viewIndex() throws Exception {
this.mockMvc.perform(get("/")).andExpect(view()
.name(containsString("index"))).andDo(print());
}

AbstractContextControllerTests:

@WebAppConfiguration("file:src/main/webapp/WEB-INF/spring/webmvc-config.xml")
@ContextConfiguration("file:src/main/resources/META-INF/spring/applicationContext.xml")
public class AbstractContextControllerTests {

@Autowired
protected WebApplicationContext wac; }

我已经使用另一个测试验证了控制器方法本身,但是当我使用上下文时,即使控制器在容器中运行时提供正确的页面,测试也会失败。

有问题的控制器如下所示:

@Controller
public class RootController {
@Autowired
CategoryService categoryService;    

    @RequestMapping(value = "/", method = RequestMethod.GET, produces = "text/html")
    public String index(Model uiModel) {    
            uiModel.addAttribute("categories", categoryService.findAll());
        return "index";
    }

显然,我没有测试我的想法。有什么建议如何对这个问题进行三角测量?

我在Pastebin发布了完整的网络mvc文件,以免混乱所有空间。

1 个答案:

答案 0 :(得分:0)

仅供参考:value的{​​{1}}属性是XML配置文件,而是Web应用程序的 root 目录。因此,您当前的测试配置永远不会起作用。

假设@WebAppConfigurationapplicationContext.xml分别是 root webmvc-config.xml DispatcherServlet的XML配置文件,请尝试重新定义{{ 1}}如下:

WebApplicationContext

顺便说一句, abstract 测试类实际上必须声明为AbstractContextControllerTests。 ;)

此致

Sam(Spring TestContext Framework的作者)