使用TestContext Framework进行Spring和测试

时间:2012-08-20 18:12:31

标签: spring testing junit

我想为使用Spring MVC的应用程序编写一些单元测试。我在Spring主页上阅读了手册页:http://static.springsource.org/spring/docs/current/spring-framework-reference/html/testing.html,看来这个Spring测试框架真的很有用。

但问题如下:

1.如果我理解正确,要使用任何注释进行测试,例如@ContextConfiguration,我需要使用@RunWith(SpringJUnit4ClassRunner.class)吗?但是有可能使用两个跑步者(可能不是),我只是想知道是否可以使用Spring runner和mockito,因为我使用mockito来模拟普通对象。

2.我有一个关于使用@ContextConfiguration加载xml上下文文件的问题。我在src/main/webapp/WEB-INF/spring中有我的.xml文件,如何使用ContextConfiguration加载它们?我试过了

@ContextConfiguration(locations="/webapp/WEB-INF/spring/root-context.xml")
@ContextConfiguration(locations="webapp/WEB-INF/spring/root-context.xml")
@ContextConfiguration(locations="/WEB-INF/spring/root-context.xml")
@ContextConfiguration(locations="WEB-INF/spring/root-context.xml")
@ContextConfiguration(locations="/src/main/webapp/WEB-INF/spring/root-context.xml")
@ContextConfiguration(locations="src/main/webapp/WEB-INF/spring/root-context.xml")

但我总是得到class path resource [some_path] cannot be opened because it does not exist。我想知道我应该使用哪条路径?

编辑:   第二个问题是WEB-INF不在类路径中,这是帮助我的主题Location of spring-context.xml

1 个答案:

答案 0 :(得分:5)

  1. 不,你不能拥有两个@RunWith,而是应该使用Mockito提供的其他方式来创建Mock替身。

  2. 指定多个位置的方法是:

    @ContextConfiguration(locations={"first.xml", "second.xml"})