`
sun113
  • 浏览: 51616 次
  • 来自: NeverNeverlaNd
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

easyMock学习--jdbc

阅读更多
使用EasyMock测试一段JDBC程序:

待测试的代码如下:

package testPlace;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Hello {

      private Connection connection;
      private ResultSet rs;
      private List lotNoList = new ArrayList();
      private int startpage;
      private int endpage;

      /**
       * @return Returns the connection.
       */
      public Connection getConnection() {
           return connection;
      }

      /**
       * @param connection The connection to set.
       */
      public void setConnection(Connection connection) {
           this.connection = connection;
      }

      /**
       * @return Returns the lotNoList.
       */
      public List getLotNoList() {
           return lotNoList;
      }

      /**
       * @param lotNoList The lotNoList to set.
       */
      public void setLotNoList(List lotNoList) {
           this.lotNoList = lotNoList;
      }
 
      public ResultSet getDataFromDb(int mode) {
           String sql = "";
           Statement sm = null;
           try {
                 if (mode == 0) {
                      sql = "SELECT * FROM MAT_TOKYO_DENPYOU WHERE FINPRT <> 'F' ";
                      sm = connection.createStatement();
                      sm.execute(sql);
                      rs = sm.getResultSet();
                 }
                 if (mode == 1) {
                      if (lotNoList != null) {
                            sql = "SELECT * FROM MAT_TOKYO_DENPYOU WHERE LOTNO IN ( ";
                            Iterator ite = lotNoList.listIterator();
                            while (ite.hasNext()) {
                                  sql = sql + ite.next().toString();
                                  if (ite.hasNext()) {
                                       sql = sql + ", ";
                                  }
                            }
                            sql = sql + " )";
                            sm = connection.createStatement();
                            sm.execute(sql);
                            rs = sm.getResultSet();
                      } else {
                            return null;
                      }
                 }

                 if (mode == 2) {
                      sql = "S ELECT * F ROM AMMM W HERE PAGENO >= "
                                  + startpage + "A ND PAGENO <= " + endpage;
                      sm = c onnection.createStatement();
                      sm.execute(sql);
                      rs = sm.getResultSet();
                 }
           } catch (SQLException e) {
                 e.printStackTrace();
                 return null;
           } finally {
                 if (sm != null) {
                      try {
                            sm.close();
                      } catch (SQLException e) {
                            e.printStackTrace();
                      }
                 }
           }
           return rs;
      }
}



测试完毕的代码如下:

package testPlace.test;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.easymock.MockControl;
import testPlace.Hello;

public class HelloTest extends TestCase {

      Hello hello;
      
      private MockControl connectionCtr;
      private MockControl statementCtr;
      private MockControl resultSetCtr;
      private Connection mockConn;
      private Statement mockStat;
      private ResultSet mockRs;
      private Statement stmt;
      private ResultSet rs;
      private String sql;

      protected void setUp() throws Exception {
           hello = new Hello();
           connectionCtr = MockControl.createControl(Connection.class);
           mockConn = (Connection) connectionCtr.getMock();
           statementCtr = MockControl.createControl(Statement.class);
           mockStat = (Statement) statementCtr.getMock();
           resultSetCtr = MockControl.createControl(ResultSet.class);
           mockRs = (ResultSet) resultSetCtr.getMock();
      }

      protected void tearDown() throws Exception {
           super.tearDown();
           hello = null;
      }

      /*
       * Test method for 'testPlace.Hello.getDataFromDb(int)'
       */
      public void testGetDataFromDb() {
           try {
                 connectionCtr.expectAndReturn(mockConn.createStatement(),mockStat,  2);
                 statementCtr.expectAndReturn(mockStat.execute("SELECT * FROM MAT_TOKYO_DENPYOU WHERE LOTNO IN ( a, b )"),   true, 2);
                 statementCtr.expectAndReturn(mockStat.getResultSet(),mockRs,2);
                 mockStat.close();
                 statementCtr.setVoidCallable(1, 2);
                 statementCtr.expectAndReturn(mockStat.close(),MockControl.ONE_OR_MORE);
                 connectionCtr.replay();
                 statementCtr.replay();
                 resultSetCtr.replay();

                 //这里不知道算不算逻辑
                 // transfer testList
                 List testList = new ArrayList();
                 testList.add("a");
                 testList.add("b");
                 hello.setLotNoList(testList);
                 hello.setConnection(mockConn);

                 assertNotNull(hello.getDataFromDb(1));
                 assertEquals(mockRs, hello.getDataFromDb(1));

                 connectionCtr.verify();
                 statementCtr.verify();
                 resultSetCtr.verify();
           } catch (Exception e) {
                 e.printStackTrace();
           }
      }
      
}
分享到:
评论
1 楼 sun113 2007-06-02  
不知道怎么回事,捣鼓了半天还是这个样子,不过编辑状态下,又会回来正常状态,不知道怎么搞得!help!!

相关推荐

    easymock2-javadoc-2.5.2-12.el7.noarch.rpm

    离线安装包,亲测可用

    easymock2-2.5.2-12.el7.noarch.rpm

    离线安装包,亲测可用

    easymock2-javadoc-2.5.2-12.el7.x64-86.rpm.tar.gz

    1、文件内容:easymock2-javadoc-2.5.2-12.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/easymock2-javadoc-2.5.2-12.el7.tar.gz #Step2、进入解压后的...

    easymock2-2.5.2-12.el7.x64-86.rpm.tar.gz

    1、文件内容:easymock2-2.5.2-12.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/easymock2-2.5.2-12.el7.tar.gz #Step2、进入解压后的目录,执行安装 ...

    powermock-easymock-junit-1.6.1.zip

    在"powermock-easymock-junit-1.6.1.zip"这个压缩包中,包含了这些工具的特定版本。 首先,我们来了解一下EasyMock。EasyMock是一个模拟框架,它允许开发者创建预期的交互(mock objects)并验证对象之间如何进行...

    powermock-easymock-junit-1.5.4.zip

    这个压缩包"powermock-easymock-junit-1.5.4.zip"很可能包含了这三个库的特定版本1.5.4,便于开发者下载和集成到自己的项目中。 首先,我们来详细了解一下PowerMock。PowerMock是一个扩展了其他模拟框架(如...

    easymock-2.5.2.jar

    easymock-2.5.2.jar easymock-2.5.2.jar 单元测试

    easymock-3.1.jar

    easymock需要用到的包,没有它不行,easymock-3.1.jar

    easymock-3.2.jar

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。

    easymock-4.0-bundle

    EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定...

    EasyMock 3.1相关jar(所有)

    还在为EasyMock使用时出异常而烦恼? 本压缩包包含除了Junit4之外easyMock3.1所用到的所有相关jar包,junit4可自己导入eclipse自带的即可 本压缩包包括: asm.jar cglib.jar objenesis.jar等 其中asm与cglib已兼容,放心...

    easymock-javadoc-1.2-22.el7.x64-86.rpm.tar.gz

    1、文件内容:easymock-javadoc-1.2-22.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/easymock-javadoc-1.2-22.el7.tar.gz #Step2、进入解压后的目录,...

    rh-java-common-easymock3-javadoc-3.3-1.5.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    rh-java-common-easymock2-javadoc-2.5.2-12.15.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    rh-java-common-easymock3-3.3-1.5.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    rh-java-common-easymock2-2.5.2-12.15.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    easymock-1.2-22.el7.x64-86.rpm.tar.gz

    1、文件内容:easymock-1.2-22.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/easymock-1.2-22.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm ...

    4-EasyMock-Servlet.rar

    【EasyMock-Servlet详解】 EasyMock是一个流行的Java模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以此来模拟复杂的系统交互。在Servlet环境下,EasyMock可以帮助我们测试独立于实际HTTP请求的Servlet...

    easymock-3.0.jar

    java运行依赖jar包

    easymock-3.1

    EasyMock 3.1 是一个流行的Java模拟框架,它允许开发者在单元测试中模拟对象的行为,以便更好地控制测试环境并确保代码的正确性。...通过深入学习和实践,你可以充分利用这个工具提升代码质量,确保软件的稳定性。

Global site tag (gtag.js) - Google Analytics