`

Spring MVC实现Junit Case

阅读更多

 

Spring MVC中编写单元测试(WEB项目):

 

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

 

package com.yusj.basecase;

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
* 配置文件载入类 
* @ClassName: BaseSpringTestCase 
* @Description: 要想实现Spring自动注入,必须继承此类
* @author yusj  
* @date 2014年6月9日 下午3:16:44 
*
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
    "file:src/main/webapp/WEB-INF/config/applicationContext.xml",
    "file:src/main/webapp/WEB-INF/config/captcha-context.xml",
    "file:src/main/webapp/WEB-INF/config/springmvc-servlet.xml"
})

// 添加注释@Transactional 回滚对数据库操作  
@Transactional
public class BaseSpringTestCase {
	
}

 

 

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

 

package com.yusj.web.controller;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.sql.SQLException;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

import com.sim.tracker.basecase.BaseSpringTestCase;

/**
 * 
* @ClassName: UserControllerTest 
* @Description: 测试用户控制类  
* @author yusj 
* @date 2014年5月18日 
*
 */
public class UserControllerTest extends BaseSpringTestCase {

	// 模拟request,response
	private MockHttpServletRequest request;
	private MockHttpServletResponse response; 
	
	// 注入userController
	@Autowired
	private UserController userController ;
	
	// 执行测试方法之前初始化模拟request,response
	@Before  
    public void setUp(){  
        request = new MockHttpServletRequest();    
        request.setCharacterEncoding("UTF-8");    
        response = new MockHttpServletResponse();    
    }  
	
	/**
	 * 
	 * @Title:testLogin
	 * @Description: 测试用户登录  
	 * @author yusj   
	 * @date 2014年5月18日
	 */
	@Test
	public void testLogin() {
		String username= "aaaa" ;
		String password = "bbbb" ; 
		try {
			assertEquals("loginok",userController.login(username, password, request)) ;
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

 

 

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

 

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				 <configuration>
		             <testFailureIgnore>true</testFailureIgnore>
		         </configuration>
			</plugin>
		</plugins>
	</build>
</project>

 

 

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

maven pom.xml配置代码如下:

<dependencies>
         <dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
	</dependency>		
</dependencies>

 

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

 

 

0
0
分享到:
评论
2 楼 ysj5125094 2014-06-21  
java_web_hack1 写道
光测试Controller没用阿,
页面怎么测试,JSP怎么测试?

我还没用Junit测试过JSP呢,你知道怎么测试么?教教我。
1 楼 java_web_hack1 2014-06-18  
光测试Controller没用阿,
页面怎么测试,JSP怎么测试?

相关推荐

Global site tag (gtag.js) - Google Analytics