`
lohasle
  • 浏览: 254538 次
社区版块
存档分类
最新评论

使用junit测试SpringMVC

阅读更多
架包支持: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 )

    junit针对springmvc工程三层测试.rar

    SpringMvc单元测试Junit

    总的来说,SpringMvc与JUnit的结合使用能够帮助开发者构建健壮的、可测试的应用程序。通过有效的单元测试,我们可以尽早发现潜在的问题,提高代码质量,降低维护成本。因此,掌握这种测试技巧对于任何SpringMvc...

    Hibernate4+SpringMVC+Junit4+log4j环境搭建Jar包

    6. 集成JUnit4,编写测试类,使用@Test注解标记测试方法,进行单元测试。 7. 配置log4j,根据项目需求调整日志输出级别和目的地。 以上就是关于“Hibernate4+SpringMVC+Junit4+log4j环境搭建”的详细说明。在实际...

    Ant+Junit+Svn实现自动单元测试

    - 安装JUnit库,将其jar文件添加到Ant的lib目录,以便Ant能够运行JUnit测试。 - 安装Subversion(Svn),配置相关环境变量。 - 将svnant.jar,svnClientAdapter.jar,svnjavahl.jar添加到项目的lib目录,以支持...

    spring的Junit测试-helloworld

    要创建一个Spring JUnit测试,我们需要引入以下依赖: 1. `spring-test`:这是Spring的测试模块,包含JUnit的扩展。 2. `junit-jupiter-api`:JUnit 5的核心API,用于编写测试。 接下来,我们来编写一个简单的...

    SpringMVC3+Hiberate4+Junit+json

    SpringMVC、Hibernate、JUnit 和 JSON 这四个技术在IT行业中是极其重要的组件,它们各自在不同的领域发挥着关键作用,而将它们整合在一起则能构建出强大的企业级Web应用程序。 SpringMVC 是Spring框架的一个模块,...

    springmvc ssh通用的junit测试样例

    总的来说,Spring MVC SSH通用的JUnit测试样例是Java Web开发中不可或缺的工具,它们帮助开发者构建健壮、可维护的代码,同时提高开发效率。这些测试样例不仅提供了测试的模板,也是理解SSH和Spring MVC测试策略的...

    springmvc+mybatis+maven+junit实现网页的增删查改

    为了确保代码质量,我们需要编写JUnit测试。在`src/test/java`下,为每个Service或Controller创建测试类,利用Mockito模拟依赖,对各个功能进行单元测试。例如,`UserServiceTest`可以测试UserService的所有CRUD操作...

    springMVC+mybatis+maven+junit

    JUnit支持注解,使得测试代码更简洁,同时与Mockito等库配合使用,可以进行模拟对象测试,隔离被测试代码的依赖。 这四个技术结合在一起,可以构建出一套完整的开发流程:使用Maven管理项目依赖和构建流程,Spring ...

    springMVC junit mybatis整合

    在IT行业中,SpringMVC、JUnit和MyBatis是三个非常重要的开源框架,它们分别用于构建Web应用程序、单元测试和数据库操作。这三个组件的整合能够为开发者提供一个高效且易于维护的开发环境。下面将详细讲解这三个框架...

    springmvc项目搭建并实现Junit单元测试

    然后,编写测试类,使用@RunWith注解指定SpringJUnit4ClassRunner运行器,@ContextConfiguration注解加载上下文配置,使用@WebAppConfiguration表明是Web应用测试。例如: ```java package ...

    maven+springMVC+mybatis+junit详细搭建过程整合实现demo,带有jar包和测试类。增删改查的操作供大家学习。

    本教程将详细讲解如何使用四个关键的技术栈——Maven、SpringMVC、MyBatis和JUnit来搭建一个功能完善的示例项目,并包含了数据库操作和单元测试。下面,我们将深入探讨每个组件以及它们在项目中的作用。 首先,**...

    测试springmvc3

    在 "测试springmvc3" 的场景中,我们将关注 Spring MVC 3 版本的关键特性和测试策略。 Spring MVC 3 在前一版本的基础上引入了若干改进和新特性,以提升开发效率和性能。以下是一些关键知识点: 1. **注解驱动**:...

    spring+springMVC+mybatis+maven+junit+mysql

    【标题】"spring+springMVC+mybatis+maven+junit+mysql" 是一个常见的Java Web项目技术栈,它涵盖了从后端开发到数据库管理,再到自动化构建和测试的完整流程。下面将详细阐述这些技术及其在项目中的作用。 ...

    spring+springmvc+mybatis+maven+junit整合

    在集成开发环境中,JUnit测试通常与持续集成工具一起使用,以保证每次代码更改后都能进行自动测试。 在这个整合项目中,`index.jsp`可能是应用的主页面,展示给用户的第一界面。`WEB-INF`目录包含应用的配置文件,...

    测试springmvc2

    Spring MVC 是一个基于 Java 的轻量级 Web ...在实际操作中,我们需要编写测试用例,使用JUnit、Mockito等工具,结合日志分析,确保每个环节都按预期工作。同时,对HTML视图的验证也十分重要,确保用户界面的正确展示。

    springMVC+mybatis整合及测试(亲测可运行)

    7. **测试**:编写JUnit测试类,模拟HTTP请求,测试Controller的处理逻辑是否正确,同时验证Mybatis的SQL执行结果是否符合预期。 在“SpringMVCMybatis”这个压缩包中,应包含上述所有配置文件、Mapper接口、XML...

    springmvc测试入门示例

    这个“springmvc测试入门示例”旨在帮助初学者了解如何在实际项目中使用SpringMVC进行开发和测试。下面我们将深入探讨SpringMVC的核心概念以及如何设置和运行一个基本的测试案例。 1. **SpringMVC简介** SpringMVC...

    maven+springMVC+mybatis+velocity+mysql+junit项目框架搭建

    本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...

    springmvc+maven+junit+jqueryUI

    标题中的"springmvc+maven+junit+jqueryUI"是一个典型的Web开发技术组合,涉及四个主要组件:Spring MVC、Maven、JUnit和jQuery UI。现在,让我们深入探讨这些技术及其在实际开发中的应用。 1. Spring MVC(Spring ...

Global site tag (gtag.js) - Google Analytics