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
转自: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
下一篇: Linux添加、创建新用户