- 浏览: 506984 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
这里将用到以下几个包:
aopalliance-1.0.jar
commons-collections.jar
commons-dbcp.jar
commons-logging-1.1.1.jar
commons-pool.jar
junit-4.4.jar
jstl.jar
log4j-1.2.15.jar
mysql-connector-java-5.1.6-bin.jar
spring-aop-2.5.6.jar
spring-beans-2.5.6.jar
spring-context-2.5.6.jar
spring-context-support-2.5.6.jar
spring-core-2.5.6.jar
spring-jdbc-2.5.6.jar
spring-tx-2.5.6.jar
spring-test-2.5.6.jar
spring-web-2.5.6.jar
spring-webmvc-2.5.6.jar
standard.jar
主要增加了spring-test-2.5.6.jar和junit-4.4.jar两个用于测试的包!
这里尤其要说明一下,由于我们使用注解方式自然要用到JUnit-4.X系列,而Sring-Test对于JUnit有个累人的要求,JUnit的版本必须是4.4,不支持高版本(如4.5、4.7等)。否则,会产生java.lang.ClassNotFoundException: org.junit.Assume$AssumptionViolatedException异常。
先来一个能够自动回滚的用于测试的父类——AbstractTestCase
AbstractTestCase.java
- /**
- * 2009-12-16
- */
- package org.zlex.spring;
- import org.junit.runner.RunWith;
- import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
- 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;
- /**
- * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
- * @version 1.0
- * @since 1.0
- */
- @ContextConfiguration(locations = "classpath:applicationContext.xml")
- @RunWith(SpringJUnit4ClassRunner.class)
- @Transactional
- @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
- public abstract class AbstractTestCase extends
- AbstractTransactionalDataSourceSpringContextTests {
- }
/** * 2009-12-16 */ package org.zlex.spring; import org.junit.runner.RunWith; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; 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; /** * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> * @version 1.0 * @since 1.0 */ @ContextConfiguration(locations = "classpath:applicationContext.xml") @RunWith(SpringJUnit4ClassRunner.class) @Transactional @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) public abstract class AbstractTestCase extends AbstractTransactionalDataSourceSpringContextTests { }
让每一个测试类都写一堆配置忒麻烦! 索性来个老爹替子子孙孙都完成基础工作!
逐行分析:
@ContextConfiguration(locations = "classpath:applicationContext.xml")导入配置文件。这时候,我们可以看出之前使用applicationContext.xml文件作为系统总控文件的好处! 当然,Spring-Test的这个配置只认classpath,很无奈,我必须拷贝这些文件到根目录!
@RunWith(SpringJUnit4ClassRunner.class)SpringJUnit支持,由此引入Spring-Test框架支持!
@Transactional这个非常关键,如果不加入这个注解配置,事务控制就会完全失效!
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)这里的事务关联到配置文件中的事务控制器(transactionManager = "transactionManager"),同时指定自动回滚(defaultRollback = true)。这样做操作的数据才不会污染数据库!
AbstractTransactionalDataSourceSpringContextTests要想构建这一系列的无污染纯绿色事务测试框架就必须找到这个基类!
给出一个整体结构图:
test子目录下的文件将编译到classpath下,这其实还同时是个maven测试项目!拷一堆配置文件的确有些不方便!
AbstractTestCase.java用于抽象测试类控制。
AccountDaoTest.java用于AccountDao测试。
DaoAllTests.java用于Dao层的整体测试。
来看看AccountDaoTest
AccountDaoTest.java
- /**
- * 2009-12-16
- */
- package org.zlex.spring;
- import java.util.Date;
- import org.junit.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.zlex.spring.dao.AccountDao;
- import org.zlex.spring.domain.Account;
- /**
- * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
- * @version 1.0
- * @since 1.0
- */
- public class AccountDaoTest extends AbstractTestCase {
- @Autowired
- private AccountDao accountDao;
- @Test
- public void test() {
- Account ac = new Account();
- ac.setBirthday(new Date());
- ac.setUsername("SPRING");
- ac.setPassword("SNOWOLF");
- ac.setEmail("spring@zlex.org");
- // 创建用户
- accountDao.create(ac);
- // 检索
- Account account = accountDao.read("SPRING");
- // 校验
- assertNotNull(account);
- }
- }
/** * 2009-12-16 */ package org.zlex.spring; import java.util.Date; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.zlex.spring.dao.AccountDao; import org.zlex.spring.domain.Account; /** * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> * @version 1.0 * @since 1.0 */ public class AccountDaoTest extends AbstractTestCase { @Autowired private AccountDao accountDao; @Test public void test() { Account ac = new Account(); ac.setBirthday(new Date()); ac.setUsername("SPRING"); ac.setPassword("SNOWOLF"); ac.setEmail("spring@zlex.org"); // 创建用户 accountDao.create(ac); // 检索 Account account = accountDao.read("SPRING"); // 校验 assertNotNull(account); } }
只要记得使用注解@Test标识方法即可!
这里插入了一条数据,之后进行检索。如果数据存在则认为测试成功! 当然,这时候你要看看数据库是不是真的插入了一条数据!
执行这个方法,同时监控数据库,观察日志!最有效的办法是在执行检索方法时加入断点,同时监控数据库记录,你会发现此时数据库无此数据录入! 实际上这是一个未提交的事务!
完成操作,看看这时的日志:
数据库其实已经进行了回滚!
再看看DaoAllTests
DaoAllTests.java
- /**
- * 2009-12-17
- */
- package org.zlex.spring;
- import org.junit.runner.RunWith;
- import org.junit.runners.Suite;
- import org.junit.runners.Suite.SuiteClasses;
- /**
- * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
- * @version 1.0
- * @since 1.0
- */
- @RunWith(Suite.class)
- @SuiteClasses( { AccountDaoTest.class, AccountDaoTest.class })
- public class DaoAllTests {
- }
/** * 2009-12-17 */ package org.zlex.spring; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; /** * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> * @version 1.0 * @since 1.0 */ @RunWith(Suite.class) @SuiteClasses( { AccountDaoTest.class, AccountDaoTest.class }) public class DaoAllTests { }
逐行说明:
@RunWith(Suite.class)集合测试
@SuiteClasses( { AccountDaoTest.class })集合,包括AccountDaoTest类,多个测试类可使用逗号分隔!
这个测试类可用于Dao层集合测试,与Spring无关!
评论
发表评论
-
cronExpression
2010-08-30 17:57 1147一个Cron-表达式是一个由六至七个字段组成由空格分隔的 ... -
spring任务调度(task)
2010-08-23 13:24 2796spring 任务调度总结参考资料http://www.ibm ... -
spring 任务配置
2010-08-23 10:45 1158xml 代码 <bean id="i ... -
spring3.0注解式声明
2010-08-19 17:39 4325从spring2.5开始,annotation结合BeanPo ... -
Spring Roo 自动化集成开发工具
2010-08-04 14:54 2200Roo是一种 Spring 开发的辅助工具,使用命令行操作来生 ... -
spring3.0学习
2010-08-03 16:24 819https://src.springframework.org ... -
Spring mvc 转发、重定向
2010-07-28 16:53 2369spring控制器最后返回一个ModelAndView( ... -
spring api download
2010-07-28 08:43 1134在网上找了好多,都下不下来,要不就是需要注册登录什么的,才能下 ... -
Spring uploadFile
2010-05-02 20:45 2170先让我们来看一段摘自《Spring 2.5 Referen ... -
Spring_MVC(5)业务层处理
2010-04-24 18:47 1939这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(4)持久层处理
2010-04-24 18:45 1158这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(3)表单页面处理
2010-04-24 18:43 2995// 跳转到用户信息页面 ... -
Spring_MVC(2)控制层处理
2010-04-24 18:42 1658言归正传,研究一下注解下的控制层。 我习惯于使用JSTL展示页 ... -
Spring_MVC(1)构建简单web应用
2010-04-24 18:40 1392Java代码 /** * 2010 ... -
spring实现文件上传
2010-04-24 15:15 1570Spring由内置的multipart支持web应用中的文件上 ... -
Spring MVC:使用InternalResourceViewResolver视图解析器
2010-02-24 09:14 2011参考:Sping 2.0.8\docs\MVC-step-by ... -
ibatis+spring控制事务配置
2009-04-05 10:25 1888<bean id="dataSource&qu ... -
转:spring事务控制配置实例
2009-04-03 10:47 3312Spring声明式事务配置的几种方法 在Spring中进 ... -
spring+ibatis+struts事务控制配置
2009-04-03 10:38 1520<?xml version="1.0" ... -
spring+ibatis+struts配置问题
2009-04-01 14:48 1084以下web.xml配置 <?xml version=&q ...
相关推荐
spring mvc 核心类与接口 spring mvc 核心流程图 spring mvc DispatcherServlet说明 spring mvc 双亲上下文的说明 springMVC-mvc.xml 配置文件片段讲解 ...如何给spring3 MVC中的Action做JUnit单元测试?
Spring3_MVC+MyBatis3整合搭建基础DEMO 测试表结构 create table T_TEST ( TEST_ID int not null auto_increment, USERNAME varchar(20), PASSWORD varchar(20), CREATE_DATE datetime, primary key (TEST_ID) ...
Spring_MVC SpringMVC测试
初级springMVC代码,配置文件的配置与简单log4j的测试代码
基于Spring4MVC的测试Demo,Spring4 SpringMVC SpringBoot SpringSide5
夏老师《spring开发指南0.8》里第一个login的例子,完整war文件,tomcat&glass fish下测试过的。
夏老师《spring开发指南0.8》里用户注册的例子,完整war文件,tomcat&glass fish下测试过的。
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
下载文件修正过了,应该可以下载了,如果不行,请把email给我,我一个个发过去。 <br>夏老师《spring开发指南0.8》里第一个login应用freemarker template的例子,完整war文件,tomcat测试。
毕业设计可以包括文献综述、需求分析、方案设计、实施与测试等多个阶段,以确保整个过程的科学性和系统性。 其次,毕业设计的完成通常需要学生具备一定的独立思考和解决问题的能力。在研究过程中,学生可能需要采用...
带有AngularJS前端的简单Spring Rest API项目。...模型实体spring.mvc.repository-DAO存储库spring.mvc.service-服务测试: spring.mvc.service.BankEntityServiceTest spring.mvc.service.ClientEntityServiceTest
spring mvc的简单单元测试:,详细请参考:http://blog.csdn.net/xiejx618/article/details/21201007
Spring MVC非注解测试,用于理解spring mvc原理,然后再结合源码分析,更好的理解spring mvc
junit针对spring mvc三层测试,通过测试运行,可直接下载运行!
Spring MVC 学习总结(五)——校验与文件上传 目录 2.2.7、范围 2.2.8、其它注解 2.3、注解控制器参数 1.4、在UI中添加错误标签 1.5、测试运行 三、使用jQuery扩展插件Validate实现前端校验 3.1、jQuery扩展插件...
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...
含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段时间的应用和测试 ...
演示该项目是使用版本7.0.3生成的。...运行单元测试运行ng test以通过执行单元测试。运行端到端测试运行ng e2e通过执行端到端测试。进一步的帮助要获得有关Angular CLI的更多帮助,请使用ng help或查看 。
自己写的模拟在线考试系统,虽然只是个demo(其实就是木有用数据库,用的一个静态集合模拟的,方便快速部署),但是建模和架构都是完整的,包含war和源码,只需把war部署到tomcat服务器中就可以运行