Skip to content

面试速答(先看这里)

**一句话结论:**那就是可以通过 内存数据库 来帮助我们解决上面的问题,内存数据库就是主要依靠内存存储数据的数据库管理系统,在单元测试时使用内存数据库就可以在单测运行时初始化数据库及表结构及数据,在运行结束后直接回收掉。

60秒标准回答:

在我们的业务逻辑代码中,很重要的一部分是数据库的增删改查的逻辑,那么,如果对这部分代码进行单元测试呢?

如果直连数据库的话,不仅操作比较慢,还会造成大量的脏数据,而且数据库中已有的一些历史数据也可能会影响单元测试的结果,那么,有什么好的办法呢?

那就是可以通过 内存数据库 来帮助我们解决上面的问题,内存数据库就是主要依靠内存存储数据的数据库管理系统,在单元测试时使用内存数据库就可以在单测运行时初始化数据库及表结构及数据,在运行结束后直接回收掉。特别的方便

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**在我们的业务逻辑代码中,很重要的一部分是数据库的增删改查的逻辑,那么,如果对这部分代码进行单元测试呢?
  • **要点2:**如果直连数据库的话,不仅操作比较慢,还会造成大量的脏数据,而且数据库中已有的一些历史数据也可能会影响单元测试的结果,那么,有什么好的办法呢?
  • **要点3:**H2 数据库 是一个比较好用的内存数据库,它可以随着程序启动去创建数据表和数据,随着程序关闭而销毁,非常方便,可以作为单元测试数据库的替代品;
  • **要点4:**关于内存数据库的更多细节,面试的时候一般不太会追问的更多,这里就不展开介绍了,大家感兴趣的话,可以去
  • **要点5:**官网地址:

**记忆锚点:**h2database → wwwh2databasecom → 初始化数据库及表结构 → githubcom → mainhtml → H2 数据库

加分表达:

  • 在我们的业务逻辑代码中,很重要的一部分是数据库的增删改查的逻辑,那么,如果对这部分代码进行单元测试呢?
  • 如果直连数据库的话,不仅操作比较慢,还会造成大量的脏数据,而且数据库中已有的一些历史数据也可能会影响单元测试的结果,那么,有什么好的办法呢?
  • 那就是可以通过 内存数据库 来帮助我们解决上面的问题,内存数据库就是主要依靠内存存储数据的数据库管理系统,在单元测试时使用内存数据库就可以在单测运行时初始化数据库及表结构及数据,在运行结束后直接回收掉。

追问准备:

  • 在我们的业务逻辑代码中,很重要的一部分是数据库的增删改查的逻辑,那么,如果对这部分代码进行单元测试呢?
  • 如果直连数据库的话,不仅操作比较慢,还会造成大量的脏数据,而且数据库中已有的一些历史数据也可能会影响单元测试的结果,那么,有什么好的办法呢?

典型回答 ​

在我们的业务逻辑代码中,很重要的一部分是数据库的增删改查的逻辑,那么,如果对这部分代码进行单元测试呢?

如果直连数据库的话,不仅操作比较慢,还会造成大量的脏数据,而且数据库中已有的一些历史数据也可能会影响单元测试的结果,那么,有什么好的办法呢?

那就是可以通过内存数据库来帮助我们解决上面的问题,内存数据库就是主要依靠内存存储数据的数据库管理系统,在单元测试时使用内存数据库就可以在单测运行时初始化数据库及表结构及数据,在运行结束后直接回收掉。特别的方便。

H2 数据库是一个比较好用的内存数据库,它可以随着程序启动去创建数据表和数据,随着程序关闭而销毁,非常方便,可以作为单元测试数据库的替代品;

关于内存数据库的更多细节,面试的时候一般不太会追问的更多,这里就不展开介绍了,大家感兴趣的话,可以去

官网地址:http://www.h2database.com/html/main.html

github地址:https://github.com/h2database/h2database

查看更多资料。