spring 4.0 JUnit简单的Dao,Service测试
1.AbstractTransactionalJUnit4SpringContextTests 和AbstractJUnit4SpringContextTests。我们在测试用例类要继承两种中的一个。
AbstractTransactionalJUnit4SpringContextTests提供了数据库自动回滚,也就是说测试前和测试后数据库是一样的
AbstractJUnit4SpringContextTests不提供数据库自动回滚,测试会破坏数据库。
查看源码发现,AbstractTransactionalJUnit4SpringContextTests就是继承自AbstractJUnit4SpringContextTests,同时类上面多了两个Annotation:@TestExecutionListeners(TransactionalTestExecutionListener.class) 和@Transactional。所以实现数据库回滚有两种方法,如下:
public class BasicTest extends AbstractTransactionalJUnit4SpringContextTests {}
和
@TestExecutionListeners(TransactionalTestExecutionListener.class)
@Transactional
public class BasicTest extends AbstractJUnit4SpringContextTests {
}
好吧,说了这么多没用的还不如直接上代码
为了避免每个测试用例都要配置spring环境,先建立一个父类:BasicTest,内容很简单,真的很简单:
@ContextConfiguration(locations= {"classpath:spring/applicationContext.xml","classpath:spring/spring-servlet.xml"})
public class BasicTest extends AbstractTransactionalJUnit4SpringContextTests {
}
@ContextConfiguration:顾名思义就是配置context配置文件的地址,我这里是Web程序,所以还要spring-servlet.xml。
网上的例子都有@RunWith注解,但是我发现 AbstractJUnit4SpringContextTests 类上已经有了@RunWith,那么这里就不需要了。只要配置@ContextConfiguration就可以了 然后测试用例继承BasicTest如下: 具体的测试方法怎么写就不用说了。
public class PeopleServiceTest extends BasicTest{
@Resource(name="PeopleService")
private PeopleService ps;
@Test
public void queryAll() {
List<People> list=ps.queryAll(null);
System.out.println(list);
Assert.assertEquals("list没有10个", , list.size());
}
@Test
public void update() {
People p=new People().set("id", ).set("name", "tom").set("address", "").set("age", );
Assert.assertEquals("没有修改", , this.ps.update(p));
}
@Test
public void insert() {
People p=new People().set("name", "Mike").set("address", "america").set("age", );
Assert.assertEquals("没有插入", , this.ps.add(p));
}
}
spring 4.0 JUnit简单的Dao,Service测试的更多相关文章
- spring 4.0 JUnit简单的Controller测试
比Dao和Service的测试稍微复杂一点.还是先写一个BasicWebTest用来总体配置: @WebAppConfiguration @ContextConfiguration(locations ...
- ssh框架整合---- spring 4.0 + struts 2.3.16 + maven ss整合超简单实例
一 . 需求 学了这么久的ssh,一直都是别人整合好的框架去写代码,自己实际动手时才发现框架配置真是很坑爹,一不小心就踏错,真是纸上得来终觉浅! 本文将记录整合struts + spring的过程 , ...
- 使用spring 4.0 + maven 构建超简单的web项目
一.需求 使用spring去管理web项目,是目前非常流行的一种思路,本文将介绍使用maven+spring 4.0.2 来构建一个简单的web项目. 二.实现 1.新建一个maven项目,如下图所示 ...
- spring boot web开发 简单的增删改查和spring boot 自带的Junit测试 案例
创建 web项目 配置pom.xml文件 ------相当于jar包 配置application.yml -----配置文件(spring数据库连接.server服务.logging日志等) 创建 ...
- Spring的事务到底该给Dao配置还是给Service配置
Spring的事务到底该给Dao配置还是给Service配置 Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性. 事务得根据项目性质来细分:事务可以设置到三个层面(dao层.serv ...
- SSM框架整合(Spring+SrpingMVC+Mybatis) 简单案例
简介: SSM框架是Spring,SpringMVC 和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,dao层四层. Spring实现 ...
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现(转)
使用 @Repository.@Service.@Controller 和 @Component 将类标识为 Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的 ...
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)
前两章我为大家详细介绍了如何搭建Maven环境.Spring MVC的流程结构.Spring MVC与Struts2的区别以及示例中的一些配置文件的分析.在这一章,我就对示例的层次结构进行说明,以及M ...
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现--转载
使用 @Repository.@Service.@Controller 和 @Component 将类标识为 Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的 ...
随机推荐
- web前端框架之自定义form表单验证
自定义form验证初试 .在后端创建一个类MainForm,并且在类中自定义host ip port phone等,然后写入方法,在post方法中创建MainForm对象,并且把post方法中的sel ...
- How MapReduce Works(转)
原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/04/23/2465820.html 一.从Map到Reduce MapReduce其实是分治算法 ...
- 学习docker可能会用到的参考
局域网部署Docker--从无到有创建自己的Docker私有仓库 http://lib.csdn.net/base/docker 正在刷(学习)一遍官方文档,上面是一些其他可能用到的资料,是在解决自己 ...
- HIVE- 大数据运维之hive管理
我现在在一家公司负责大数据平台(CDH平台)的运维管理,最常遇见的问题我总结出来,并且继续在下面更新.希望方便自己以后trouble shooting以及方便各位同行解决问题与学习. 关于做运维有几个 ...
- 分享知识-快乐自己:idea的断点调试
1:Step Over ,进入下一步,如果是方法,那就直接跳过(F8) 2:Step Into,进入下一步,如果是方法,就进入方法内部,但是不会进入jdk封装的方法.(F7) 3:Force Step ...
- C# WinForm开发DataGridView 使用
1.C# WinForm开发系列 - DataGridView 使用:(http://group.cnblogs.com/topic/40730.html) 2.C# — WinForm DataGr ...
- c#子线程执行完怎么通知主线程
定义一个委托实现回调函数 public delegate void CallBackDelegate(string message); 程序开始的时候 //把回调的方法给委托变量 CallBackDe ...
- Selenium-使用firepath获取元素的xpath
- OpenCV——百叶窗
参考: PS 图像特效,百叶窗 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLU ...
- XML的二十个热点问题
这些日子,几乎每个人都在谈论XML (Extensible Markup Language),但是很少有人真正理解其含义.XML的推崇者认为它能够解决所有HTML不能解决的问题,让数据在不同的操作系统 ...