国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用spring-mock進(jìn)行dao集成測試
在進(jìn)行dao的集成測試時(shí)候,數(shù)據(jù)清理,察看數(shù)據(jù)都是比較麻煩的事情,使用Spring-mock.jar可以幫助我們簡化著一個(gè)過程。我舉一個(gè)簡單的例子,說明一下如何使用spring-mock。

首先是po, hbm.xml, dao, daoimpl沒什么好說的:

Customer.java :

package rst.spring.mock;

import java.io.Serializable;

/** @author Hibernate CodeGenerator */
public class Customer implements Serializable {

   /** identifier field */
   private Long id;

   /** nullable persistent field */
   private String name;

   /** full constructor */
   public Customer(String name) {
       this.name = name;
   }

   /** default constructor */
   public Customer() {
   }

   public Long getId() {
       return this.id;
   }

   public void setId(Long id) {
       this.id = id;
   }

   public String getName() {
       return this.name;
   }

   public void setName(String name) {
       this.name = name;
   }

}

Customer.hbm.xml :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
       "-//Hibernate/Hibernate Mapping DTD//EN"
       "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping package="rst.spring.mock">
<class name="Customer" table="customer">
<id name="id" column="id" type="long" unsaved-value="null">
<generator class="identity"/>
</id>
<property name="name" column="name" type="string"/>
</class>

</hibernate-mapping>

CustomerDAO :
/*
* Created on 2005-3-25
*/
package rst.spring.mock;

import org.springframework.dao.DataAccessException;

/**
* @author rst
*
*/
public interface CustomerDAO {
   public void add(Customer customer) throws DataAccessException;
}

CustomerDAOImpl :

package rst.spring.mock;

import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;

/**
* Class description.
*
* @author rst
*/
public class CustomerDAOHibernateImpl extends HibernateDaoSupport implements CustomerDAO{
   
   public void add(Customer customer) throws DataAccessException{
       this.getHibernateTemplate().save(customer);
   }
}



然后測試的基類SpringDAOTestCase繼承自AbstractTransactionalDataSourceSpringContextTests,目前只有一個(gè)指定測試用xml文件位置的邏輯。

package rst.spring.mock;

import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;

/**
* Class description.
*
* @author rst
*/
public abstract class SpringDAOTestCase extends AbstractTransactionalDataSourceSpringContextTests {

 protected String[] getConfigLocations() {
   return new String[] { "test.xml" };
 }

}


接著是我們真正測試的類CustomerDAOTest.java:

package rst.spring.mock;

/**
* Class description.
*
* @author rst
*/
public class CustomerDaoTest extends SpringDAOTestCase {

   private CustomerDAOHibernateImpl customerDAO;

   protected void onSetUpInTransaction() throws Exception {
       super.onSetUpInTransaction();
       //this.setPopulateProtectedVariables(true);
       customerDAO = (CustomerDAOHibernateImpl) this.applicationContext.getBean("customerDAO");
   }

   protected void onTearDownInTransaction() {
       customerDAO = null;
   }

   public void testInsert() {
       Customer customer = new Customer();
       customer.setName("javaeye");
       customerDAO.add(customer);
       String name = (String) jdbcTemplate.queryForObject("select name from customer where id=?", new Object[]{customer.getId()}, String.class);
      
       assertEquals(customer.getName(), name);
   }

}


最后看看配置文件test.xml:

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

<!--
 - Application context definition for Petclinic on Hibernate.
-->
<beans>

<!-- ========================= RESOURCE DEFINITIONS ========================= -->
 
<!-- Configurer that replaces ${...} placeholders with values from a properties file -->
<!-- (in this case, JDBC-related settings for the dataSource definition below) -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location"><value>classpath:jdbc.properties</value></property>
</bean>

<!-- Local DataSource that works in any environment -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
<property name="url"><value>${jdbc.url}</value></property>
<property name="username"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
</bean>

<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="mappingResources">
<value>rst/spring/mock/Customer.hbm.xml</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>

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

<bean id="customerDAO" class="rst.spring.mock.CustomerDAOHibernateImpl">
<property name="hibernateTemplate"><ref local="hibernateTemplate"/></property>
</bean>
</beans>

這個(gè)文件很簡單,不要忘記transactionManager的配置,Test類會(huì)自動(dòng)裝配的。

運(yùn)行之后,就可以看到應(yīng)有的結(jié)果,并且數(shù)據(jù)庫中不會(huì)有數(shù)據(jù)污染。這個(gè)過程主要是開始一個(gè)transaction,然后開始你的test方法,執(zhí)行dao操作,執(zhí)行sql查詢驗(yàn)證結(jié)果,最后無論成功失敗rollback transaction。

Trackback地址: http://www.yculblog.com/trackback/0/621226

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring中JdbcDaoSupport的DataSource注入問題
簡化Spring(1)--配置文件
spring整合JPA總結(jié)
maven搭建ssh
Hibernate3與spring的整合應(yīng)用-技術(shù)學(xué)習(xí)者
Spring 與Hibernate的延遲加載和Dao模式 [翻譯] - 東方未名 - Bl...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服