架包支持:junit.jar;org.springframework.test-3.1.0.RELEASE.jar
测试Dao基础类:JUnitDaoBase
package test.test;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* <b>Summary: </b> TODO Junit 基础类,加载环境
* <b>Remarks: </b> TODO DAO测试基础类
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/config/applicationContext.xml"})
public class JUnitDaoBase extends AbstractTransactionalJUnit4SpringContextTests {
/**
* <b>Summary: </b> 复写方法 setDataSource
*
* @param dataSource
* @see org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests#setDataSource(javax.sql.DataSource)
*/
@Override
@Resource(name = "myDataSource")
public void setDataSource(DataSource dataSource) {
// TODO Auto-generated method stub
super.setDataSource(dataSource);
}
}
具体dao 测试继承daoBaseTest就可以了
package test.java.dao;
import java.util.List;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.pinfang.dao.UserDao;
import com.pinfang.vo.User;
import test.test.JUnitDaoBase;
/**
* dao层测试例子
* @author fule
*
*/
public class UserDaoTest extends JUnitDaoBase {
@Autowired
private UserDao userDao;
@Test
public void testUserDao() {
User user = new User();
user.setPassword("123456");
user.setName("大妈");
user.setSex(1);
//System.out.println(userDao.findOnValidate(user).getMark());
List<User> list = userDao.getAll();
System.out.println(list);
//System.out.println(userDao.findOneByName("张三s"));
//System.out.println(userDao.addUser(user));
}
}
action层测试基础类:JUnitActionBase
package test.test;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.BeforeClass;
import org.springframework.mock.web.MockServletContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.XmlWebApplicationContext;
import org.springframework.web.servlet.HandlerAdapter;
import org.springframework.web.servlet.HandlerExecutionChain;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
/**
* JUnit测试action时使用的基类
*
* @author fule
*
*/
public class JUnitActionBase {
private static HandlerMapping handlerMapping;
private static HandlerAdapter handlerAdapter;
/**
* 读取配置文件
*/
@BeforeClass
public static void setUp() {
if (handlerMapping == null) {
String[] configs = {
"file:src/config/applicationContext.xml" };
XmlWebApplicationContext context = new XmlWebApplicationContext();
context.setConfigLocations(configs);
MockServletContext msc = new MockServletContext();
context.setServletContext(msc);
context.refresh();
msc.setAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
context);// TODO
handlerMapping = (HandlerMapping) context
.getBean(DefaultAnnotationHandlerMapping.class);
handlerAdapter = (HandlerAdapter) context
.getBean(context
.getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]);
// handlerAdapter = (HandlerAdapter) context.getBean(context
// .getNamespace());
}
}
/**
* 执行request请求的action
*
* @param request
* @param response
* @return
* @throws Exception
*/
public ModelAndView excuteAction(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// 这里需要声明request的实际类型,否则会报错
request.setAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING, true);
HandlerExecutionChain chain = handlerMapping.getHandler(request);
ModelAndView model = null;
try {
model = handlerAdapter
.handle(request, response, chain.getHandler());
} catch (Exception e) {
e.printStackTrace();
}
return model;
}
}
测试action类继承它就可以了
package test.java.action;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import com.pinfang.logic.service.UserService;
import test.test.JUnitActionBase;
/**
* action测试列子
* @author fule
*
*/
public class UserActionTest extends JUnitActionBase {
@Autowired UserService service;
@Test
public void testUserShow() throws Exception{
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setServletPath("/userManager/user.show");
request.addParameter("name", "张三");
request.addParameter("password", "123456");
request.setMethod("post");
request.setAttribute("msg", "测试action成功");
final ModelAndView mav = this.excuteAction(request, response);
Assert.assertEquals("userManager/userlist", mav.getViewName());
String msg=(String)request.getAttribute("msg");
System.out.println(msg);
}
}
配置文件记得声明两个bean:
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
Spring读取WEB-INF下配置文件的方法:
配置文件放在class目录下:
view plaincopyprint?
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("springMVCForm-servlet.xml");
WEB-INF下:
[java] view plaincopyprint?
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("WebContent/WEB-INF/springMVCForm-servlet.xml");
多个文件可用*表示:
[java] view plaincopyprint?
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("WebContent/WEB-INF/springMVCForm-*.xml");
注解方式:
配置文件放在class目录下:
[java] view plaincopyprint?
@ContextConfiguration(locations={"classpath:springMVCForm-servlet.xml"})
WEB-INF下:
view plaincopyprint?
@ContextConfiguration(locations={"file:WebContent/WEB-INF/springMVCForm-servlet.xml"})
参考:
http://blog.csdn.net/yeohcooller/article/details/7631202
http://a52071453.iteye.com/blog/1559000
http://www.iteye.com/topic/828513
这几个帖子很详细很强大
分享到:
相关推荐
junit针对springmvc工程三层测试.rar
一个简洁的SrpingMvc的Demo, 包含基于Junit的单元测试。
springmvc ssh通用的junit测试样例
Ant+Junit+Svn实现自动单元测试
springmvc项目搭建并实现Junit单元测试源码
NULL 博文链接:https://b-l-east.iteye.com/blog/1156674
maven+springMVC+mybatis+junit详细搭建过程整合实现demo,带有jar包和测试类。增删改查的操作供大家学习。内含数据库文件!
springmvc的rest风格的增删改查,适合springmvc的新手
spring+springmvc+mybatis+maven+junit的整合,适合初学者
eclipse创建的springmvc_maven_mybstis3_junit4 web的小demo,测试通过。
在网上找了好久,大部分都有一些小问题,这个代码是自己亲自调试,测试可运行。springMVC3,hibernate4,进行整合并采用junit进行测试,jar包齐全,文件上传,json转换的jar包多有。亲测可用,没有问题,代码简单。
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean ...
springmybatis spring、springmvc和mybatis的结合,maven构造,加入junit测试
Intellij IDEA创建Maven+springmvc+mybatis3+junit4的web项目,测试通过!需要的下载学习
其中,对于相关的DAO,Service操作,均添加了Junit单元测试实例。 开发文档 一、业务分析 1.秒杀系统业务流程 2.秒杀业务的核心:库存的处理 3.针对库存业务分析:事务(1>.减内存 2>.记录购买明细) 4.记录...
springMvc+Mybatis+maven环境搭建小项目,其中包括log4j,junit测试
5、测试Spring+mybatis的框架搭建,写单元测试JUnit,测试事务配置等:model-->dao(mapper)-->service-->test 6、映入SpringMVC:配置SpringMVC配置信息。-->配置文件:spring-mvc.xml(扫描controller) 7...
activti实例带完整JUnit4测试
springMVC mybatis框架搭建,采用注解方式。提供junit测试。
工程名ssmm表示:springmvc+spring+mybatis+maven ...使用Junit4进行单元测试, 使用Log4j管理日志 本例仅为示例,结构简单,不包含Ajax 测试url http://localhost:8080/ssmm_demo/userController/showUser.do?id=1 ...