`

Spring Test---DAO 篇

 
阅读更多

在用Spring框架开发过程中,会定义一些bean。有些bean之间有依赖关系。

 

单元测试(Unit Test)需要构造被测试的对象,有些可以通过简单的new运算符生成一个实例。对于比较复杂的对象,比如DAO,有一些依赖关系,构造起来比较麻烦。这时可以通过Spring Test Framework的annotation机制来处理这些复杂的对象。

假设文件路径如下:

<Project>/src/com/example/dao

<Project>/test/com/example/dao

 

package com.example.dao


@ContextConfiguration(
        locations={"classpath:MyDAOTest-context.xml",
                "classpath:other-context-config.xml"
                
        }
        )
public class MyDAOTest extends AbstractJUnit4SpringContextTests {

//    @Resource(name="myDao")
    @Autowired
    private MyDAO myDao;


	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}
	
	
	
	@Test
	public void testSave() {
	    
	    MyBean entity = new MyBean();
	    //set attributes
	    
	    
	    myDao.saveOrUpdate(entity);
	    
	    Assert.isTrue(true);
	}

}
 
 

put MyDAOTest-context.xml, other-context-config.xml under folder <Project>/test

------------------------------MyDAOTest-context.xml-------------------------------------------

 

<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">-->

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

    
    <bean id="myDao" class="com.example.dao.MyDAOImpl">
        <property name="sessionFactory" ref="amSessionFactory"/>
    </bean>
 
 
 	<bean id="amSessionFactory" parent="sessionFactory"
    	class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!--   		<property name="packagesToScan"> -->
<!-- 	        <list> -->
<!-- 	            <value>com.example.model</value> -->
<!-- 	        </list> -->
<!-- 	    </property>	   -->
		<property name="packagesToScan" value="com.example.model" />
 	</bean>

</beans>
 

-------------------------------------------------other-context-config.xm-------------------------------------------------

 

<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">-->

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

 
	<bean id="propertyPlaceholder"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:database.properties" />
	</bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${oracle.jdbc.driver_class}"/>
        <property name="url" value="${oracle.jdbc.url}"/>
        <property name="username" value="${oracle.jdbc.username}"/>
        <property name="password" value="${oracle.jdbc.password}"/>
	</bean>
	
    <bean id="entityInterceptor"
          class="com.mercury.itg.core.persistency.HibernateITGInterceptor"/>


    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      
		<property name="configurationClass">
			<value>org.hibernate.cfg.AnnotationConfiguration</value>
		</property>
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="hibernateProperties">
            <ref bean="hibernateProperties"/>
        </property>
        <property name="entityInterceptor">
            <ref local="entityInterceptor"/>
        </property>
    </bean>

    <bean id="hibernateProperties"
          class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="properties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.Oracle9Dialect
                </prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.c3p0.minPoolSize">5</prop>
                <prop key="hibernate.c3p0.maxPoolSize">20</prop>
                <prop key="hibernate.c3p0.timeout">600</prop>
                <prop key="hibernate.c3p0.max_statement">50</prop>
                <prop key="hibernate.c3p0.testConnectionOnCheckout">
                    false
                </prop>
            </props>
        </property>
    </bean>

    <bean id="hibernateTemplate"
          class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>

    <bean id="transactionManager"
          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>
    
    <bean id="transactionTemplate"
      class="org.springframework.transaction.support.TransactionTemplate">
      <property name="transactionManager">
			<ref bean="transactionManager" />
		</property>

	</bean>

    <tx:annotation-driven/>
</beans>

 --------------------------------------database.properties-------------------------------------------

 

oracle.jdbc.driver_class=oracle.jdbc.driver.OracleDriver
oracle.jdbc.url=jdbc:oracle:thin:@localhost:1521:MySID
oracle.jdbc.username=username
oracle.jdbc.password=password
oracle.jdbc.schema=MySchema

oracle.jdbc.system.username=system
oracle.jdbc.system.password=Admin2012
oracle.jdbc.sys.username=sys
oracle.jdbc.sys.password=Admin2012
 

@ContextConfiguration 究竟做了什么呢?可以通过下面这段代码来解释。

public class MyDAOTest {
    
    protected static ApplicationContext ac = null; 
    static{
        ac = new ClassPathXmlApplicationContext(new String[]{"MyDAOTest-context.xml","other-context-config.xml"});
    }

    protected MyDAO myDao;


	@Before
	public void setUp() throws Exception {
	    myDao = (MappingDAO)ac.getBean("myDao");
	}

	@After
	public void tearDown() throws Exception {
	}
	
	
	@Test
	public void testSave() {
         ...
        }
 

 

 

分享到:
评论

相关推荐

    spring-mvc-test-sample-master.zip_spring mvc_springmvc-test

    在"spring-mvc-test-sample-master.zip"这个压缩包中,我们很可能是得到了一个Spring MVC测试项目的源码示例,旨在帮助开发者更好地理解和应用Spring MVC。 首先,让我们深入理解Spring MVC的核心概念: 1. **...

    spring-framework-4.3.30.RELEASE-dist.zip

    5. **集成测试**:Spring提供了丰富的测试工具和注解,如`@SpringBootTest`,方便开发者编写单元测试和集成测试,确保代码质量。 6. **WebSocket支持**:Spring框架支持WebSocket协议,便于实现实时通信功能。 7. ...

    spring security 所需要jar包

    spring-dao-2.0.8.jar spring-jdbc-2.0.8.jar spring-security-acl-2.0.4.jar spring-security-core-2.0.4.jar spring-security-core-tiger-2.0.4.jar spring-security-taglibs-2.0.4.jar spring-support-2.0.8.jar ...

    spring boot-mybatis demo

    9. **测试**:Spring Boot 提供了测试支持,可以通过 `@SpringBootTest` 和 `@Autowired` 注解来编写单元测试或集成测试,验证数据库操作的正确性。 以上就是 "spring boot-mybatis demo" 项目中的主要技术点。这个...

    spring-2.0.8-sources.jar.zip

    Spring 2.0.8引入了Spring Test模块,提供了对单元测试和集成测试的强大支持。它可以轻松地模拟和注入依赖,帮助开发者编写高效且易于维护的测试代码。 九、源码分析 通过阅读"spring-2.0.8-sources.jar"中的源...

    spring-boot-04-web-restfulcrud

    通过定义Repository接口,我们可以轻松地完成数据的CRUD操作,而无需编写大量的DAO层代码。 4. **Controller层设计** 控制器是处理HTTP请求的核心组件。在Spring Boot中,我们使用`@RestController`注解创建REST...

    利用JUnit和Spring-test对SpringJDBC组件DAO层测试

    本话题将深入讲解如何利用JUnit和Spring-test这两个工具对SpringJDBC组件的DAO层进行有效测试。 首先,JUnit是一个流行的Java单元测试框架,它允许开发者编写可重复运行的测试用例,以验证代码的正确性。在针对...

    spring-boot-starter-mybatis-spring-boot-1.3.4.zip

    spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root mybatis.mapper-locations=classpath:mapper/*.xml ``` 3. **自动配置** Spring...

    spring-mybatis整合jar包,spring-mybatis整合jar包

    7. **spring-test-4.2.4.RELEASE.jar**:Spring的测试模块,提供了对Spring应用的单元测试和集成测试的支持,可以帮助开发者验证Spring Mybatis的配置和功能是否正确。 整合Spring Mybatis通常涉及以下步骤: 1. ...

    spring-boot-starter-mybatis-spring-boot-2.1.2.zip

    spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` - **配置...

    尚硅谷-佟刚-spring使用的spring-framework-4.0.0.RELEASE

    在Spring与Hibernate的整合中,DI使得我们可以轻松地将数据访问层(DAO)对象注入到业务逻辑层(Service)中,无需手动创建和管理这些对象。 4. **AOP(面向切面编程)**: Spring的另一个重要特性是AOP,它允许...

    spring-test-dbunit-template

    弹簧测试数据库单元模板 使用简化CRUD测试的扩展最新发布0.1.1 您可以在Maven中央存储库中下载二进制文件: Gradle testCompile 'com.github.hippoom:spring-test-dbunit-template: 0.1 . 1 ' 玛文 &lt; dependency&gt; ...

    spring-framework-4.2.0.RELEASE官方jar包

    7. **测试支持**:Spring 提供了针对 Spring 应用的测试框架,支持单元测试和集成测试,如 Spring Test 和 Spring Boot Test。 在 `spring-framework-4.2.0.RELEASE` 版本中,有以下重要的更新和改进: - **更好的...

    spring-framework-0.9.zip

    6. **单元测试支持**:Spring提供了方便的测试工具,如`org.springframework.test`包,使得对Spring应用进行单元测试和集成测试变得简单。 7. **国际化(Internationalization, i18n)**:Spring 0.9已经包含了对...

    spring-boot-starter-mybatis-spring-boot-2.1.0.tar.gz

    spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver # MyBatis配置 mybatis....

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    13) spring-mock.jar需spring-core.jar,spring-beans.jar,spring-dao.jar,spring-context.jar,spring-jdbc.jarspring2.0和spring2.5及以上版本的jar包区别Spring 2.5的Jar打包 在Spring 2.5中, Spring Web MVC...

    spring-boot-starter-mybatis-spring-boot-2.1.4.zip

    spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. **配置...

    spring-boot-starter-mybatis-spring-boot-2.2.2.tar.gz

    spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=...

    Spring-Spring mvc-MyBatis

    &lt;scope&gt;test &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-core ${spring.version} &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-web ${spring.version} &lt;!-- 其他相关依赖略 --&gt; ``` ...

    官方原版源码spring-framework-5.1.9.RELEASE.zip

    5. **Test**:Spring提供了强大的测试支持,包括单元测试和集成测试工具,可以方便地进行模拟对象和依赖注入。 6. **Instrumentation**:这个模块主要用于服务器端的应用程序部署和类加载器的增强,比如在Tomcat等...

Global site tag (gtag.js) - Google Analytics