Spring环境下的JUnit4测试
1,下载所需jar包:
spring-test-3.2.0.RELEASE.jar
junit-4.11.jar
commons-dbcp-1.4.jar
2,配置Spring数据源:
spring-dao-test.xml
因为测试用例不是运行在Server环境下,不方便通过JNDI取得数据源,所以只能在Spring中自行配置,暂用DBCP(实际开发中建议不用DBCP,有BUG):
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
- <property name="url" value="jdbc:oracle:thin:@192.168.1.2:1523:test" />
- <property name="username" value="test" />
- <property name="password" value="test" />
- </bean>
3,测试DAO
SpringTest.java
- import static org.junit.Assert.*;
- import org.junit.Before;
- import org.junit.Ignore;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import javax.annotation.Resource;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- import org.springframework.test.context.transaction.TransactionConfiguration;
- import org.springframework.transaction.annotation.Transactional;
- @Transactional
- @TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations={"classpath:spring-dao-test.xml","classpath:spring-service-test.xml"})
- public class SpringTest
- {
- @Resource(name="testDao")
- private TestDao testDao;
- @Before
- public void setUp() throws Exception
- {
- }
- @Test
- public void testMyDao()
- {
- try
- {
- testDao.doSomething();
- }
- catch (Exception e)
- {
- fail("Test failed!");
- }
- }
- @Ignore
- public void testOtherSpringObject()
- {
- fail("Not yet implemented");
- }
- }
4,测试Spring的Controller
(1)测试用例代码CreateProductControllerTest.java
- import static org.junit.Assert.*;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import javax.annotation.Resource;
- import org.springframework.http.HttpMethod;
- import org.springframework.mock.web.MockHttpServletRequest;
- import org.springframework.mock.web.MockHttpServletResponse;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- import org.springframework.test.context.transaction.TransactionConfiguration;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.servlet.ModelAndView;
- @Transactional
- @TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations={"classpath:spring-servlet.xml", "classpath:spring-dao-test.xml", "classpath:spring-service-test.xml"})
- public class CreateProductControllerTest
- {
- @Resource(name="/createProduct.htm")
- CreateProductController createProductController;
- private MockHttpServletRequest request;
- private MockHttpServletResponse response;
- @Before
- public void before()
- {
- request = new MockHttpServletRequest();
- response = new MockHttpServletResponse();
- request.setCharacterEncoding("UTF-8");
- }
- @Test
- public void testToSearchPage()
- {
- //request.setRequestURI("createProduct.htm");
- //request.setMethod(HttpMethod.POST.name());
- ModelAndView mv = null;
- try
- {
- mv = createProductController.toSearchPage(request, response);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail("testToSearchPage failed!");
- }
- assertNotNull(mv);
- assertEquals(response.getStatus(), 200);
- }
- }
5,注意被测试对象在Spring中不能配置AOP切面代理,否则注入到TestCase时,会产生类型不匹配的异常。因为被代理后的类型发生了变化,注入到TestCase中时,与原始的类型有区别。
另外,运行TestCase时,可能需要加上两个jvm参数:
-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
相关推荐
基于Spring的JUnit4单元测试
Junit4+Spring2.5单元测试代码示例同时也适用注解注入的形式测试(前提要导好测试的包哦,包MyEclipce自带了)
spring添加 单元测试 junit4 +spring jar包: hamcrest-core-1.3.jar junit-4.12.jar spring-test-4.2.5.RELEASE.jar
通过Spring集成单元测试,以后测试service层内容时,就不用getBean()来获得Service层对象了
免费了,spring4+JUnit简单测试,注解组件扫描和xml显示组件扫描,我自己都忘了里面有什么了。
junit测试适用例 ,各种用法都有,非常详细
SSM中进行单元测试Junit4+spring-test所需jar包,
基于Spring的JUnit4单元测试
单元测试—— Spring 环境下测试,所需要的jar包: spring-test-4.3.29.RELEASE.jar、junit-4.13.1.jar、hamcrest-core-1.3.jar。
NULL 博文链接:https://zkf60553.iteye.com/blog/1604723
Junit 单元测试 包括Spring Struts 两个模块的测试案例。附源码
junit针对spring mvc三层测试,通过测试运行,可直接下载运行!
使用JUnit进行单元测试PPT Spring 基于Aspectj 进行AOP编程的知识。 Aspectj快速参考文档
spring3 + mybatis3 + junit4 可运行项目示例 可进行单元测试,集成测试。。。
spring-Test,Junit4 jar,和测试代码
改代码是我的我的一个项目自己写完后自测所以就写了这个junit的单元测试类,以及可能会遇到的一些问题,以及其中的一些经验,项目用的是spring + mybatis。我写的这个测试类基本概括了单元测试的基本用法,只要按照...
Spring的MOVE进行Junit单元测试,详细说明在: http://blog.csdn.net/xzknet/archive/2008/10/24/3135783.aspx
NULL 博文链接:https://miaoxianjie.iteye.com/blog/1671913
该资源包含了spring整合单元测试Junit开发包spring-test-4.2.4.RELEASE.jar
单元测试案例junit +spring mvc +springboot