栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用数据填充ResultSet的简单方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用数据填充ResultSet的简单方法

据我所知,DBUnit不会提供结果集,尽管它将很好地帮助您填充内存数据库。

我要说的是,此时嘲笑框架是错误的方法。模拟与测试行为和交互有关,而不仅仅是返回数据,因此它很可能会妨碍您。

相反,我将要么实现一个结果集接口,要么创建一个结果集接口的动态代理,该类可以实现一个类,该类实现了您关心的方法而不必实现整个结果集。您可能会发现维护类就像维护内存数据库一样容易(前提是被测数据集是一致的),并且可能更容易调试。

您可以使用DBUnit备份该类,在其中使用dbunit捕获结果集的快照,并在测试过程中让dbunit从xml中读取它,并让您的虚拟结果集从dbunit的类中读取数据。如果数据比较复杂,这将是一种合理的方法。

如果这些类之间的耦合程度如此之高,以至于它们需要读取作为同一测试的一部分进行了修改的数据,那么我将选择内存数据库。即使那样,我仍然会考虑使用真实数据库的副本,直到您设法将这种依赖性拉开。

一种简单的代理生成方法:

private static class SimpleInvocationHandler implements InvocationHandler {    private Object invokee;    public SimpleInvocationHandler(Object invokee) {        this.invokee = invokee;    }    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        method = invokee.getClass().getMethod(method.getName(), method.getParameterTypes());        if (!method.isAccessible()) { method.setAccessible(true);        }        try { return method.invoke(invokee, args);        } catch (InvocationTargetException e) { throw e.getTargetException();        }    }}public static <T> T generateProxy(Object realObject, Class... interfaces) {    return (T) Proxy.newProxyInstance(realObject.getClass().getClassLoader(), interfaces, new SimpleInvocationHandler(realObject));}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号