通过Junit和Spring-Test测试SpringMVC的web应用
1、通过Spring-Test测试web应用
可以避免多次启动web 容器带来的烦恼,每次执行特定的测试方法。
再也不用通过web容器(如tomcat,jetty等)启动整个web应用,尤其是当项目复杂,比较庞大时,能够节省很多时间。
2、maven依赖
maven依赖除了需要用到的junit和spring以及其他的项目使用的依赖之外,需要额外增加
spring-test的jar包。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Used for Hibernate4 LocalSessionFactoryBean -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
3、具体测试类
这里只贴上了对应测试类,controller类只实现简单的syso。
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration(value = "src/main/webapp")
@ContextConfiguration({"classpath*:/applicationContext.xml" })
//@ContextConfiguration("file:src/main/resources/applicationContext.xml")
public class TestRunController {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Autowired
TestController testController ;
@Autowired
ServletContext context;
@Before
public void setUp() {
// mockMvc = MockMvcBuilders.webAppContextSetup( wac ).build();
mockMvc = MockMvcBuilders.standaloneSetup( testController).build() ;
}
@Test
public void test() throws Exception {
assertNotNull(mockMvc);
mockMvc.perform( MockMvcRequestBuilders.get("/test/testA.action?a=1") )
.andReturn() ;
}
@Test
public void testB() throws Exception {
assertNotNull(mockMvc);
mockMvc.perform( MockMvcRequestBuilders.post("/test/testB.action" ).content("aaa") )
.andReturn() ;
}
}
参考资料:
http://my.oschina.net/u/2007041/blog/418748?fromerr=AKpkgCGL
http://jinnianshilongnian.iteye.com/blog/2004660
https://www.ibm.com/developerworks/cn/java/j-lo-springunitest/
springmvc-test的api: http://www.csdn123.com/html/mycsdn20140110/a7/a75383fcc7d869a7627583ada5e76e46.html