单元测试对dao层的测试有什么好的实践方案?

发布于 2022-09-04 20:52:18 字数 130 浏览 13 评论 0

比如对某个新增的dao进行单元测试,那岂不是要真的往数据库中插入一条数据?每次单元测试都新增一条数据?

还有,查询操作,返回一个List的对象集合,怎么判断数据是准确的呢?

对于单元测试,大家有什么好的实践方案吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

£噩梦荏苒 2022-09-11 20:52:18

单元测试中使用数据库,可以考虑两种方案:

  1. 搭建一个长期使用的测试数据库,作为单元测试,测试开始前或完成后清空无关数据,即可保证测试的可重复性。缺点是多个人同时运行单元测试时,可能会失败。

  2. 使用内存数据库(如 H2)。优点是无需清空无关数据,缺点是要将数据库初始化过程(如建表语句)纳入单元测试中。如果初始化很复杂,也会影响单元测试的效率。

至于如何验证查询结果,基本上根据业务逻辑来。比如我单元测试运行到这里,查询这个一定会返回 27 条记录,那就验证返回记录数是否为 27。其他情况可以自己设计。

暗喜 2022-09-11 20:52:18

当时是使用事务,这样也方便持续集成。

墨小墨 2022-09-11 20:52:18

使用spring的事务控制啊

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:applicationContext-database.xml",
        "classpath:applicationContext.xml"})
@Transactional
public abstract class BaseSpringTest {
    protected final Logger logger = LoggerFactory.getLogger(getClass());
}

像这样,默认是会回滚的

心作怪 2022-09-11 20:52:18

为了避免写数据到库里,可以插入后,再次删除。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文