- 浏览: 928019 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
Spring DAO层的测试AbstractTransactionalDataSourceSpringContextTests
- 博客分类:
- spring
1. Spring DAO层的测试AbstractTransactionalDataSourceSpringContextTests
2. spring2.5, 不知道为什么Junit4的风格用不了!!
Spring的DAO层的测试,我是通过继承AbstractTransactionalDataSourceSpringContextTests来做的。比较简单,而且又支持回滚,没有数据库的耗时操作,又是spring-test.jar发布包里直接支持的,所以就选个了。
代码实现也很简单,我先定义了一个base类,其他的测试类全部都继承这个base类,就更方便控制了。
public class BaseDAOTestCase extends AbstractTransactionalDataSourceSpringContextTests {
protected final static Log log = LogFactory.getLog(BaseDAOTestCase.class);
@Override
public String[] getConfigLocations() {
setAutowireMode(AUTOWIRE_BY_TYPE);
return new String[] { "classpath:/test-*-beans.xml", "classpath:/test-*-beans.xml" };
}
}
实现test的类:
package com.dvs.biz.dao.ibatis;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.dvs.biz.dao.UserDAO;
import com.dvs.biz.model.User;
import com.dvs.common.dao.ibatis.BaseDAOTestCase;
/**
*
* Now, Junit 3.8.1 version.
*
* But I hope everyone can also follow Junit4 coding style
*
*/
public class UserDAOIbatisTest extends BaseDAOTestCase {
private UserDAO userDao;
private User user;
private Integer pk;
private Integer pk2 = new Integer(1137799366);
public void setUserDAO(UserDAO userDao) {
this.userDao = userDao;
}
public UserDAOIbatisTest() {
pk = 12345678;
user = new User();
user.setAddress("aa");
user.setAge(12);
user.setPassword("aa");
user.setPk(pk);
user.setUsername("aa");
}
@Before
public void init() {
}
@Test
public void testGetList() {
try {
List list = userDao.getList();
User user1 = (User) list.get(0);
assertNotNull(user1.getPk());
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个东西特别奇怪,spring2.5已经明确说了支持junit 4.4, 可是这个类里面写的 @Before, @Test就是没有作用。在spring中文论坛也问了,目前还没有反应呢。!!!
我查了spring的源代:
我的类叫BaseTest
extends AbstractTransactionalDataSourceSpringContextTests
extends AbstractTransactionalSpringContextTests
extends AbstractDependencyInjectionSpringContextTests
extends AbstractSingleSpringContextTests
extends AbstractSpringContextTests
extends ConditionalTestCase
extends TestCase
----------------
下边是ConditionalTestCase类的开头。
package org.springframework.test;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Superclass for JUnit 3.8 based tests that allows conditional test execution
* at the individual test method level. The
* {@link #isDisabledInThisEnvironment(String) isDisabledInThisEnvironment()}
* method is invoked before the execution of each test method. Subclasses can
* override that method to return whether or not the given test should be
* executed. Note that the tests will still appear to have executed and passed;
* however, log output will show that the test was not executed.
*
* @author Rod Johnson
* @since 2.0
* @see #isDisabledInThisEnvironment
*/
public abstract class ConditionalTestCase extends TestCase {
===================
上面写着,Superclass for JUnit 3.8 based tests 。请问这个是什么问题啊,是bug吗?还是怎么回事!!
我的在程序里的junit4.4规范代码运行不了,3.8规范的代码是OK.
--------------------------------------------------------------------------------------------------------
自己回复一下吧,找到解决办法了。
spirng2.5不用上面的类了,按下以下的形式,可以做junit4.4的单元测试了。
package com.dvs.common.dao.ibatis;
import org.junit.runner.RunWith;
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 Conan
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/test-*-beans.xml" })
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
@Transactional
public class BaseDAOTestCaseJunit44 {
}
还有一个是子类:
package com.dvs.biz.dao.ibatis;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.dvs.biz.dao.UserDAO;
import com.dvs.biz.model.User;
import com.dvs.common.dao.ibatis.BaseDAOTestCaseJunit44;
/**
*
* @author Conan
*
*/
public class UserDAOIbatisTest extends BaseDAOTestCaseJunit44{
private UserDAO userDao;
private User user;
private Integer pk;
private Integer pk2 = new Integer(123);
@Autowired
public void setUserDAO(UserDAO userDao) {
this.userDao = userDao;
}
public UserDAOIbatisTest() {
pk = 1212;
user = new User();
user.setAddress("aa");
user.setAge(12);
user.setPassword("aa");
user.setPk(pk);
user.setUsername("12");
}
@Before
public void init() {
}
@Test
public void getList() {
try {
List list = userDao.getList();
User user1 = (User) list.get(0);
assertNotNull(user1.getPk());
} catch (Exception e) {
e.printStackTrace();
}
}
}
这样子就完成了,从Junit3.8向Junit4.4的转变。
发表评论
-
OncePerRequestFilter
2010-07-13 15:12 2100每一次请求执行一次的过滤器 import org.spri ... -
Spring文件资源操作和Web相关工具类盘点
2010-07-13 14:57 878Spring 不但提供了一个功能全面的应用开发框架,本身还拥有 ... -
Spring入门(07-02)-Spring的事务-xml配置
2009-09-20 12:06 1015配置文件: <!-- 配置事务管理器 --> & ... -
Spring入门(07-01)-Spring的事务-注解方式
2009-09-20 11:40 3599用 spring 事务管理器,由spring来负责数据库的打 ... -
Spring入门(06)-Spring的AOP
2009-09-16 19:13 943一.注解方式 打开注解<aop:scoped-prox ... -
Spring入门(04)-依赖注入的三种方法
2009-09-16 14:43 11821.使用构造器 private PersonDao pe ... -
Spring入门(03)-依赖注入-set方法注入
2009-09-16 11:33 1695对象注入: 方法一 ... -
Spring入门(02)-注入的三种方法
2009-09-16 09:35 9331.类构造器 <bean id="p ... -
Spring入门(01)
2009-09-15 21:41 1027使用Spring的好处: ... -
Quartz任务调度快速入门(1)
2009-05-31 13:18 1521概述 各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说: ... -
spring读applicationContext.xml
2009-05-04 09:38 1294当我把spring的配置文件转移到WEB-INF目录下以后,再 ... -
ssh整合开发
2009-05-03 20:39 13481 加入j2ee的jar包。放入lib中来 (注意,最好把 ... -
startup failed due to previous errors
2009-04-13 17:37 1961在使用SSH添加 <listener> ... -
异常问题
2009-03-31 16:57 6901.java.lang.NoClassDefFoundErro ... -
spring错误
2009-02-10 14:19 960今天看着视频,开始研究spring,在用dom4j读取配置文件 ... -
Spring入门一
2008-11-18 16:41 1081Spring的Ioc设计(BEAN的管理)Spring的AOP ...
相关推荐
Spring 数据库访问的支持。包括统一异常体系和Spring的Template+CallBack的解读
3. **编写Dao层测试** 在Dao层模块下创建对应的测试类,例如`UserDaoTest.java`。这里我们可以使用Mockito来创建Dao层所依赖的数据源的模拟对象,避免在测试中实际访问数据库。测试类示例: ```java import org....
本话题将深入讲解如何利用JUnit和Spring-test这两个工具对SpringJDBC组件的DAO层进行有效测试。 首先,JUnit是一个流行的Java单元测试框架,它允许开发者编写可重复运行的测试用例,以验证代码的正确性。在针对...
本文主要探讨Spring如何贯穿整个中间层,将Web层、Service层、DAO层以及PO(Plain Old Java Object)无缝整合起来。 #### 二、Spring框架的关键作用 1. **无缝整合**:Spring框架的一个显著特点是能够将不同的技术...
Spring框架提供了一套强大的数据访问抽象层——DAO(Data Access Object)支持,使得开发者能够在不关心具体数据库技术细节的情况下完成数据访问任务。这一机制极大地简化了开发过程,降低了代码的耦合度,并提高了...
ifunsu封装基于springjdbc的dao层,具体用法请看本站博客http://blog.csdn.net/ifunsu 。
2. **创建测试类**:创建一个继承自Spring的AbstractTransactionalDataSourceSpringContextTests的测试类,这个类提供了事务管理,并自动回滚事务,防止测试对数据库产生副作用。 3. **注入依赖**:使用Spring的@...
将 `JUnit` 与 `Spring`、`Hibernate` 结合使用,可以对 `DAO(Data Access Object)` 层进行有效的测试,确保数据访问逻辑的正确性。 首先,`DAO` 层是业务逻辑和数据库操作之间的隔离层,通常包含了增删改查等...
DAO层的设计和实现对于任何应用程序来说都是至关重要的,因为它提供了数据存储和检索的抽象,使得业务逻辑与数据操作相分离,提高了代码的可维护性和可测试性。本实例将探讨如何在Spring Boot中实例化DAO层,并使用...
8. **Unit Testing**: Spring提供了一些工具,如`@TransactionalTest`注解和`MockMvc`,方便对DAO层进行单元测试,确保代码质量。 在实际应用中,Spring DAO模式的实现通常会结合使用上述组件,通过配置文件(XML或...
Spring框架通过依赖注入(Dependency Injection,DI)实现了这一目标,使得Service层可以通过接口引用DAO层的实现,而不是直接创建DAO实例。这增强了系统的可测试性和可扩展性,因为Service层可以通过配置文件或注解...
标题"ifunsu封装基于springjdbc的dao层api"指的是一个特定的项目或库,名为ifunsu,它已经对Spring JDBC进行了封装,以创建更易用的数据访问对象(DAO)层API。DAO层是应用程序中负责与数据库进行交互的部分,通常...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层(Service层)以及数据访问层(DAO层)。本项目提供的是一款工具,能够自动化生成这三层的代码,极大地提高了...
- **数据传递对象(DTO/VO)**:封装业务数据的JavaBean类,用于在DAO和业务层之间传递信息。 例如,`PersonBean`作为DTO,`PersonDao`作为DAO接口,`PersonDaoImpl`作为DAO实现类。`PersonBean`包含了`id`, `name`...
通过这种方式,上层的应用程序可以无需直接处理复杂的数据库操作,只需调用DAO层提供的接口即可完成数据交互。 #### 2. Spring框架的支持 Spring框架提供了丰富的特性来支持DAO模式的实现,包括但不限于: - **...
- Mybatis_SpringDao可能包含以下文件:Spring的配置文件(如 applicationContext.xml),Mybatis的配置文件(mybatis-config.xml),Mapper接口,对应的XML映射文件,以及测试类等。 总的来说,Mybatis_Spring...
对于Repository或DAO层,可以使用`@DataJpaTest`或`@Sql`注解来执行数据库相关的测试。`@DataJpaTest`会启动一个内存数据库,自动配置JPA,方便测试数据存取。`@Sql`则允许我们运行SQL脚本来设置测试前的数据状态。 ...
使用JUnit和Spring Test进行单元测试,验证DAO层的功能正确性。 通过上述步骤,我们可以构建一个高效、可复用的Spring3 JDBC通用DAO层。在实际项目中,可以结合Spring的其他功能,如MyBatis、Hibernate等ORM框架,...
Spring以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力,简化了Java应用的复杂性,特别是对于数据访问层(DAO,Data Access Object)的管理。本文将详细...