我有一个界面 ShoppingListDAO 如下。
public interface ShoppingListDAO extends GenericDAO<Object, String> {
public List<ShoppingList> getShoppingList(Department department) throws ShoppingListDAOException;
}
它的实现 DAO 类类似于下面的一个。
public class ShoppingListDAOImpl extends GenericCustomDAO<Object, String> implements ShoppingListDAO {
//.......
public List<ShoppingList> getShoppingList(Department department) throws ShoppingListDAOException {
try {
ds = getDataSource();
connection = ds.getConnection();
callableStatment = connection.prepareCall(SHOPPING_LIST_QRY1);
callableStatment.setString(1, department.getDistributorNumber());
//......
callableStatment.registerOutParameter(4, OracleTypes.CURSOR);
callableStatment.execute();
resultSet= (ResultSet) callableStatment.getObject(4);
while(resultSet.next()) {
//.......
}
} catch (SQLException e) {
e.printStackTrace();
throw new ShoppingListDAOException(e);
} catch (Exception e) {
e.printStackTrace();
throw new ShoppingListDAOException(e);
}finally{
//......
}
}
return shoppingList;
}
现在我需要使用 Mock db Objects 测试我实现的 DAO 类。我搜索了 POWERMOCK/EASYMOCK 文档,但我猜大多数 API 方法都为我提供了对象,这些对象为我提供了 DAO 接口的虚拟实现类。
是否有某种方法可以创建 CONNECTION 的模拟对象(假设我没有物理数据库访问权限)并且可以运行我的
ShoppingListDAOImpl
班级中提供的后续代码,因为我必须将此模拟用于代码覆盖目的?如果有什么方法我可以
callableStatement.execute()
返回虚拟数据或异常(没有物理数据库访问),以便我可以在我的 JUnit 测试用例中检查它?
我对模拟框架很陌生,所以我的要求可能不切实际。任何信息都有帮助。