Java Hibernate:测试Daos

Java Hibernate:测试Daos,java,hibernate,unit-testing,testing,Java,Hibernate,Unit Testing,Testing,我的项目是一个核心java和hibernate的遗留项目。这里没有编写单元测试。在这种情况下,什么是测试的最佳策略 另外,如果我使用mockito,那么我将无法测试我的查询,因此我不想使用任何模拟测试框架(例如mockito、EasyMock、PowerMock)等。我可以编写junits,但它们将再次影响我的真实数据库。我考虑过使用内存数据库。使用内存数据库编写数据库测试是常见的方法(虽然它们被认为是集成测试)。但您需要考虑一些优点和缺点: 专业人士: 你不应该考虑打扫卫生 您可以根据需要以任

我的项目是一个核心java和hibernate的遗留项目。这里没有编写单元测试。在这种情况下,什么是测试的最佳策略


另外,如果我使用mockito,那么我将无法测试我的查询,因此我不想使用任何模拟测试框架(例如mockito、EasyMock、PowerMock)等。我可以编写junits,但它们将再次影响我的真实数据库。我考虑过使用内存数据库。

使用内存数据库编写数据库测试是常见的方法(虽然它们被认为是集成测试)。但您需要考虑一些优点和缺点:

专业人士

你不应该考虑打扫卫生

您可以根据需要以任何方式设置DB

处理这样的工作环境很容易。你不需要安装任何附加设备

缺点

用于测试的DB是不同的

交易可能不起作用

DB对象可能无法工作

某些sql构造可能无法工作


因此,考虑到所有缺点,我建议使用安装了DB的docker容器。每次使用干净的DB时,您不应该关心数据清理,而且这将与您在产品中使用的DB完全相同。

如果您必须访问数据库或其他外部资源,这不是单元测试。I这是一个集成测试,不管它是您的真实数据库还是存根数据库。没错,更新的标题一致。集成测试是一个非常大的词。我称之为模块测试。特别是如果使用JPA和Spring或CDI,使用框架测试您的应用程序代码是非常容易的,没有任何更改,同时使用inmeH2有Postgres和Mysql模式,它们很好地模拟了语法,因此甚至可以使用nativesql。