欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring MVC实现Junit Case[ 转]  

程序员文章站 2022-07-14 13:33:44
...
Spring MVC中编写单元测试(WEB项目):
转自:http://ysj5125094.iteye.com/blog/2082110


1. 首先开发一个基类,用于载入配置文件。以下所有的测试实现类都要继承这个类





Java代码 
1.package com.sim.tracker.basecase; 
2. 
3.import org.junit.runner.RunWith; 
4.import org.springframework.test.context.ContextConfiguration; 
5.import org.springframework.transaction.annotation.Transactional; 
6.import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; 
7.import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
8. 
9./**
10.* 配置文件载入类 
11.* @ClassName: BaseSpringTestCase 
12.* @Description: 要想实现Spring自动注入,必须继承此类
13.* @author yusj  
14.* @date 2014年6月9日 下午3:16:44 
15.*
16. */ 
17.@RunWith(SpringJUnit4ClassRunner.class) 
18.@ContextConfiguration({ 
19.    "file:src/main/webapp/WEB-INF/config/applicationContext.xml", 
20.    "file:src/main/webapp/WEB-INF/config/captcha-context.xml", 
21.    "file:src/main/webapp/WEB-INF/config/springmvc-servlet.xml" 
22.}) 
23. 
24.// 添加注释@Transactional 回滚对数据库操作   
25.@Transactional 
26.public class BaseSpringTestCase { 
27.     
28.} 





用户登录测试方法UserControllerTest如下:





Java代码 
1.package com.sim.tracker.web.controller; 
2. 
3.import static org.junit.Assert.assertEquals; 
4.import static org.junit.Assert.fail; 
5. 
6.import java.sql.SQLException; 
7. 
8.import org.junit.Before; 
9.import org.junit.Ignore; 
10.import org.junit.Test; 
11.import org.springframework.beans.factory.annotation.Autowired; 
12.import org.springframework.mock.web.MockHttpServletRequest; 
13.import org.springframework.mock.web.MockHttpServletResponse; 
14. 
15.import com.sim.tracker.basecase.BaseSpringTestCase; 
16. 
17./**
18. * 
19.* @ClassName: UserControllerTest 
20.* @Description: 测试用户控制类  
21.* @author yusj 
22.* @date 2014年5月18日 
23.*
24. */ 
25.public class UserControllerTest extends BaseSpringTestCase { 
26. 
27.    // 模拟request,response 
28.    private MockHttpServletRequest request; 
29.    private MockHttpServletResponse response;  
30.     
31.    // 注入userController 
32.    @Autowired 
33.    private UserController userController ; 
34.     
35.    // 执行测试方法之前初始化模拟request,response 
36.    @Before   
37.    public void setUp(){   
38.        request = new MockHttpServletRequest();     
39.        request.setCharacterEncoding("UTF-8");     
40.        response = new MockHttpServletResponse();     
41.    }   
42.     
43.    /**
44.     * 
45.     * @Title:testLogin
46.     * @Description: 测试用户登录  
47.     * @author yusj   
48.     * @date 2014年5月18日
49.     */ 
50.    @Test 
51.    public void testLogin() { 
52.        String username= "aaaa" ; 
53.        String password = "bbbb" ;  
54.        try { 
55.            assertEquals("loginok",userController.login(username, password, request)) ; 
56.        } catch (SQLException e) { 
57.            e.printStackTrace(); 
58.        } 
59.    } 
60.} 





注意:如果是Maven项目,当执行Maven install时,可能会报错误,造成不能正确生成war包。此时需要在pom.xml中加入如下配置:





Xml代码 
1.<project> 
2.    <build> 
3.        <plugins> 
4.            <plugin> 
5.                <groupId>org.apache.maven.plugins</groupId> 
6.                <artifactId>maven-surefire-plugin</artifactId> 
7.                 <configuration> 
8.                     <testFailureIgnore>true</testFailureIgnore> 
9.                 </configuration> 
10.            </plugin> 
11.        </plugins> 
12.    </build> 
13.</project> 





注意:因为模拟request,response需要javax.servlet,AsycnContext类的支持,所以还需要导入javax.servlet3.0 Jar包的支持。

maven pom.xml配置代码如下:



Xml代码 
1.<dependencies> 
2.         <dependency> 
3.        <groupId>javax.servlet</groupId> 
4.        <artifactId>javax.servlet-api</artifactId> 
5.        <version>3.1.0</version> 
6.    </dependency>      
7.</dependencies> 



可以到http://www.mvnrepository.com/中输入关键字javax.servlet搜索下载。下载方式见我的另一篇文章:http://ysj5125094.iteye.com/blog/2082097