2013-03-25 142 views
1

我是使用Mybatis3开发Web应用程序的新手。我有DAO Impl类和相关的Mapper.xml。我想为DAO编写Junit案例。如果有人能够帮助我, 我会非常感激。编写DAO的Junit测试用例

这是我有:

客户为mapper.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE mapper 
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
<mapper namespace="customer"> 
    <insert id="newCustomer" parameterType="com.yell.hibu.domain.Customer"> 
     INSERT INTO CUSTOMER(CUSTOMER_ID, NAME, EMAIL_ID,GRAPHIC_NAME,MOBILE,DOB,LANGUAGE,CITY,COUNTRY) values(#{customerID},#{customerName},#{emailID},#{userFileFileName},#{mobileNo},#{dob},#{language},#{city},#{country}) 
    </insert> 

    <select id="selectCustomer" resultMap="customer"> 
      SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = #{customerID}; 
     </select> 

      <resultMap type="com.yell.hibu.domain.Customer" id="customer"> 
      <result property="customerID" column="CUSTOMER_ID" /> 
       <result property="customerName" column="NAME" /> 
       <result property="emailID" column="EMAIL_ID" /> 
       <result property="userFileFileName" column="GRAPHIC_NAME" /> 
       <result property="mobileNo" column="MOBILE" /> 
       <result property="dob" column="DOB" /> 
       <result property="language" column="LANGUAGE" /> 
       <result property="city" column="CITY" /> 
       <result property="country" column="COUNTRY" /> 

     </resultMap> 
</mapper> 

DAOImpl.java

package com.yell.hibu.dao; 

import org.apache.log4j.Logger; 
import org.mybatis.spring.support.SqlSessionDaoSupport; 

import com.yell.hibu.domain.Customer; 

    public class CustomerDaoImpl extends SqlSessionDaoSupport implements CustomerDao{ 

     private final Logger logger= Logger.getLogger(this.getClass()); 

     public void insertCustomer(Customer customer) { 
      logger.info("Entered into CustomerDaoImpl :: insertCustomer()"); 
      getSqlSession().insert("customer.newCustomer", customer); 
      logger.info("leaving from CustomerDaoImpl :: insertCustomer()"); 

     } 

    } 

回答

0

由于我使用EasyMock的,我嘲笑SessionFactory的实例,它的回报模拟会话对象,或引发异常。

@Test(expectedExceptions = Exception.class) 
public void testFailureToConnect() throws Exception { 

    iocSessionFactory = EasyMock.createMock(SqlSessionFactory.class); 
    oracleDAOImpl.setIocOracleSessionFactory(iocSessionFactory); 
    EasyMock.expect(iocSessionFactory.openSession()).andThrow(new RuntimeException("CONNECTION ERROR")); 
    EasyMock.replay(iocSessionFactory); 

    oracleDAOImpl.getData(); 
} 

或者,如果你不想嘲笑一切,你可以检查出https://code.google.com/p/mybatis/wiki/Test