使用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();
}
}
}
分享到:
相关推荐
离线安装包,亲测可用
离线安装包,亲测可用
在"powermock-easymock-junit-1.6.1.zip"这个压缩包中,包含了这些工具的特定版本。 首先,我们来了解一下EasyMock。EasyMock是一个模拟框架,它允许开发者创建预期的交互(mock objects)并验证对象之间如何进行...
这个压缩包"powermock-easymock-junit-1.5.4.zip"很可能包含了这三个库的特定版本1.5.4,便于开发者下载和集成到自己的项目中。 首先,我们来详细了解一下PowerMock。PowerMock是一个扩展了其他模拟框架(如...
easymock-2.5.2.jar easymock-2.5.2.jar 单元测试
easymock需要用到的包,没有它不行,easymock-3.1.jar
EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。
EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定...
还在为EasyMock使用时出异常而烦恼? 本压缩包包含除了Junit4之外easyMock3.1所用到的所有相关jar包,junit4可自己导入eclipse自带的即可 本压缩包包括: asm.jar cglib.jar objenesis.jar等 其中asm与cglib已兼容,放心...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
【EasyMock-Servlet详解】 EasyMock是一个流行的Java模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以此来模拟复杂的系统交互。在Servlet环境下,EasyMock可以帮助我们测试独立于实际HTTP请求的Servlet...
java运行依赖jar包
EasyMock 3.1 是一个流行的Java模拟框架,它允许开发者在单元测试中模拟对象的行为,以便更好地控制测试环境并确保代码的正确性。...通过深入学习和实践,你可以充分利用这个工具提升代码质量,确保软件的稳定性。
扩展架包啊...easymockclassextension-3.1
### easymock详解教程 #### 1.1 easymock教程-目录 easymock是一种流行的Java mock框架,主要用于帮助开发者在单元测试过程中更好地控制和验证与外部系统的交互。本教程将详细介绍easymock的基本概念、核心原理...
jar包,官方版本,自测可用
jar包,官方版本,自测可用