Java Web(5) Spring 下使用Junit4 单元测试
2015-11-15 15:16
525 查看
1. 如何在不启动Tomcat服务器的情况下对,Dao这些不依赖使用Servlet API的类来进行单元测试呢?
其实在Spring框架体系中,已经有一套自己的测试代码,其中就是依赖使用Junit来进行测试 ,不需要启动Tomcat就可以对Dao来进行测试。
至于什么是Junit呢,参见Junit。
2. 首先的第一步,就是添加依赖的类库,这里就需要再一次使用到神器Maven了,在pom.xml中添加
在这里,需要注意一下,spring版本与Junit版本的兼容问题。前面我使用Spring是4.2.2的,在官方的文档中讲到
NOTE: As of Spring Framework 4.1, this class requires JUnit 4.9 or higher.
所以我使用了Junit 4.9 以上,否则运行JunitCase会抛异常
3. 编写TestCase
就这样简单,就可以轻松布置JUnit的测试环境了
4. 补充:如果在Web项目中配置有bean 的scope为“application”的时候,运行测试会显示Spring Context初始化错误。需要在添加一个注解@WebAppConfiguration,把WebApplicationContext加载上来,就解决了
其实在Spring框架体系中,已经有一套自己的测试代码,其中就是依赖使用Junit来进行测试 ,不需要启动Tomcat就可以对Dao来进行测试。
至于什么是Junit呢,参见Junit。
2. 首先的第一步,就是添加依赖的类库,这里就需要再一次使用到神器Maven了,在pom.xml中添加
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.2.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency>
在这里,需要注意一下,spring版本与Junit版本的兼容问题。前面我使用Spring是4.2.2的,在官方的文档中讲到
NOTE: As of Spring Framework 4.1, this class requires JUnit 4.9 or higher.
所以我使用了Junit 4.9 以上,否则运行JunitCase会抛异常
3. 编写TestCase
package test; import java.util.Iterator; import java.util.List; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import cn.tian.dao.*; import cn.tian.vo.*; 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; import org.springframework.transaction.annotation.Transactional; //首先指定Junit的Runner @RunWith(SpringJUnit4ClassRunner.class) //指明配置文件所在 @ContextConfiguration(locations="classpath:applicationContext.xml") //指定事务管理器 @Transactional(transactionManager="transactionManager") //继承AbstractTransactionalJUnit4SpringContextTests来获取Spring上下文环境来获取Bean public class UserDaoTest extends AbstractTransactionalJUnit4SpringContextTests{ //spring依赖注入 @Autowired private UserDao dao; //JUnit注解 ,表明这是一个需要运行的测试方法 @Test public void test(){ User admin = new User(); admin.setName("管理员"); dao.insert(user); } }
就这样简单,就可以轻松布置JUnit的测试环境了
4. 补充:如果在Web项目中配置有bean 的scope为“application”的时候,运行测试会显示Spring Context初始化错误。需要在添加一个注解@WebAppConfiguration,把WebApplicationContext加载上来,就解决了
相关文章推荐
- Java记录 -78- 可变参数
- 输入某年某月某日,判断这一天是这一年的第几天(java)
- 在java中如何跳出当前的多重嵌套循环?
- struts.custom.i18n.resources——struts国际化
- JAVASE---static关键字
- Java记录 -77- 增强的for循环与自动拆装箱
- 获得spring源码
- 第11周-数学方面:Complex类
- ubuntu下安装eclipse不显示菜单栏
- Corba开发之基于Java实现Service与Client
- easyui+spring+springmvc+ibatis学习(二)----之登陆实现
- JAVA命令参数详解
- JAVA命令参数详解
- JAVA 命令参数详解System.setProperty(
- 第11周-可着色接口Colorable类
- Java反射
- JAVA 命令参数详解System.setProperty(
- 在Java中如何操作word, excel, pdf文件
- java执行本地命令Runtime.getRuntime().exec("netstat -an");
- java执行本地命令Runtime.getRuntime().exec("netstat -an");