- 浏览: 519091 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1190一个Cron-表达式是一个由六至七个字段组成由空格分隔的 ... -
spring任务调度(task)
2010-08-23 13:24 2851spring 任务调度总结参考资料http://www.ibm ... -
spring 任务配置
2010-08-23 10:45 1203xml 代码 <bean id="i ... -
spring3.0注解式声明
2010-08-19 17:39 4372从spring2.5开始,annotation结合BeanPo ... -
Spring Roo 自动化集成开发工具
2010-08-04 14:54 2248Roo是一种 Spring 开发的辅助工具,使用命令行操作来生 ... -
spring3.0学习
2010-08-03 16:24 859https://src.springframework.org ... -
Spring mvc 转发、重定向
2010-07-28 16:53 2407spring控制器最后返回一个ModelAndView( ... -
spring api download
2010-07-28 08:43 1179在网上找了好多,都下不下来,要不就是需要注册登录什么的,才能下 ... -
Spring uploadFile
2010-05-02 20:45 2232先让我们来看一段摘自《Spring 2.5 Referen ... -
Spring_MVC(5)业务层处理
2010-04-24 18:47 1985这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(4)持久层处理
2010-04-24 18:45 1202这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(3)表单页面处理
2010-04-24 18:43 3040// 跳转到用户信息页面 ... -
Spring_MVC(2)控制层处理
2010-04-24 18:42 1696言归正传,研究一下注解下的控制层。 我习惯于使用JSTL展示页 ... -
Spring_MVC(1)构建简单web应用
2010-04-24 18:40 1441Java代码 /** * 2010 ... -
spring实现文件上传
2010-04-24 15:15 1621Spring由内置的multipart支持web应用中的文件上 ... -
Spring MVC:使用InternalResourceViewResolver视图解析器
2010-02-24 09:14 2050参考:Sping 2.0.8\docs\MVC-step-by ... -
ibatis+spring控制事务配置
2009-04-05 10:25 1923<bean id="dataSource&qu ... -
转:spring事务控制配置实例
2009-04-03 10:47 3361Spring声明式事务配置的几种方法 在Spring中进 ... -
spring+ibatis+struts事务控制配置
2009-04-03 10:38 1560<?xml version="1.0" ... -
spring+ibatis+struts配置问题
2009-04-01 14:48 1128以下web.xml配置 <?xml version=&q ...
相关推荐
七至二十,这部分主要涵盖了Spring_MVC中的各种核心特性,如访问静态资源、请求映射、拦截器的使用、异常处理、单元测试、转发与重定向、处理AJAX请求、配置文件管理、获取Spring管理的bean、多视图控制器等。...
单元测试是软件开发的重要组成部分,Spring MVC提供了对JUnit单元测试的支持。这样,开发者可以编写测试用例,对控制器中的方法进行测试,确保业务逻辑的正确性。 在配置方面,Spring MVC允许灵活地配置多个不同的...
标题中的"开发Spring MVC应用程序补充—程序源码下载.rar_spring_spring mvc_spring mvc 源码_sp"表明这是一个关于Spring MVC框架的开发教程,其中包含了源代码供学习者参考。Spring MVC是Spring框架的一个核心组件...
【Spring MVC 框架详解】 Spring MVC 是一个基于 Java 的模型-视图-控制器(MVC)架构,是 Spring 框架的一部分,用于构建Web应用程序。它为开发者提供了强大的控制层,使得开发过程更加模块化,易于测试和维护。在...
6. 测试应用,确保所有请求能够正确路由并返回预期结果。 通过这个“spring_mvc框架搭建demo”,你可以学习到如何从零开始构建一个简单的Spring MVC应用,理解每个部分的作用,并逐步掌握Spring MVC的核心概念和...
6. **运行与测试**:启动服务器,访问配置的URL,查看Spring MVC是否成功处理请求。 关于JSTL表达式,JSTL提供了多种标签,可以用来替代部分JSP脚本语言,提高代码的可读性和维护性。例如,`<c:out>`标签用于输出...
Spring MVC 是一个强大的Java web应用程序开发框架,它属于Spring框架的一部分,主要用于构建高效、可维护的Web应用。这个“Spring_MVC.rar”压缩包显然包含了完整的Spring MVC工程模板,可以帮助开发者快速理解和...
在IT行业中,Spring MVC和jQuery是两个非常重要的技术框架,它们在Web开发中扮演着关键角色。本项目“spring-mvc-jquery.zip”是关于如何将Spring MVC 3.0框架与jQuery进行整合的一个示例,旨在帮助开发者理解这两者...
6. **测试**:使用JUnit进行单元测试,确保各个模块功能正常。 完成以上步骤后,你将拥有一个完整的基于Maven的Spring、Spring MVC和Mybatis的开发环境,可以开始进行TimeSheet系统或者其他类似Web应用的开发工作。...
6. **高级主题**:可能包含AOP、Spring Boot、Spring Data JPA等扩展话题,以及性能优化、异常处理和单元测试等内容。 总之,学习这本教程可以帮助开发者深入理解Spring MVC和MyBatis的集成应用,提升企业级Web开发...
Spring MVC 是一款强大的Java Web开发框架,用于构建可维护、高性能的Web应用程序。它作为Spring框架的一部分,提供了模型-视图-控制器(MVC)架构,简化了开发流程,使得开发者能够专注于业务逻辑,而非底层的HTTP...
在本压缩包"Spring_MVC.rar_T7Y_springmvc"中,包含了初学者学习Spring MVC所需的基础配置和简单的log4j日志测试代码。 首先,我们来详细了解一下Spring MVC的核心概念和组成部分: 1. **DispatcherServlet**:...
MyBatis是一个轻量级的持久层框架,它允许开发者通过SQL语句直接操作数据库,而Spring框架则提供了依赖注入和面向切面编程的功能,增强了应用的可测试性和可维护性。MVC(Model-View-Controller)模式是Web开发中...
6. mvc.xml配置文件:该配置文件用于配置Spring MVC相关组件,例如Controller扫描、视图解析器等。在SpringMVC教程中,会对这个配置文件的各个片段进行详细讲解。 7. 静态资源访问:SpringMVC需要配置静态资源的...
Spring MVC是Spring框架中的一个核心模块,它遵循了MVC(Model-View-Controller,模型-视图-控制器)设计模式。Spring MVC允许开发者构建灵活且可维护的Web应用程序。配置Spring MVC框架是确保Web应用程序能够高效...
Spring Test模块提供了JUnit集成,使得测试Spring MVC应用变得简单。可以通过MockMvc类模拟HTTP请求,进行控制器单元测试。 在学习Spring MVC时,了解这些核心概念并结合实际项目进行实践,将有助于深入理解和掌握...
### 深入浅出学Spring Web MVC #### 一、Spring Web MVC 概述 **Spring Web MVC** 是一种轻量级的、基于MVC(Model-View-Controller)设计模式的Web应用框架,是Spring框架的重要组成部分之一。它为开发者提供了...
标题 "spring_mvc + spring + mybaist 集成" 涉及的是一个常见的企业级Java Web应用开发框架组合。Spring MVC是Spring框架的一部分,用于构建Web应用程序的前端控制器,Spring则提供了全面的依赖注入(DI)和面向切...
Spring MVC提供MockMvc工具,可以在不依赖Web服务器的情况下对Controller进行单元测试,方便快捷。 十二、实践操作 本教程中的"Spring-MVC-step-by-step.pdf"文件将详细介绍上述概念,并通过实例代码演示如何配置和...