如何在java中对jdbc代码进行单元测试?[已关闭]

2022-08-31 22:31:38

我想为连接到数据库的一些代码编写一些单元测试,运行一个或多个查询,然后处理结果。(无需实际使用数据库)

这里的另一个开发人员编写了我们自己的 DataSource、Connection、Statement、PreparedStatement 和 ResultSet 实现,这些实现将基于 xml 配置文件返回相应的对象。(我们可以使用伪造的数据源,只对它返回的结果集运行测试)。

我们是否在这里重新发明了轮子?对于单元测试,是否已经存在类似的东西?有没有其他/更好的方法来测试jdbc代码?


答案 1

您有几种选择:

  • 使用模拟库模拟数据库,例如JMock。这样做的巨大缺点是,您的查询和数据很可能根本不会被测试。
  • 使用轻量级数据库进行测试,例如 HSQLDB。如果您的查询很简单,这可能是最简单的方法。
  • 为测试专用数据库。DBUnit是一个不错的选择,或者如果您使用的是Maven,您还可以使用sql-maven-plugin来正确设置和拆卸数据库(注意测试之间的依赖关系)。我建议使用此选项,因为它将使您最有信心查询与您的数据库供应商一起正常工作。

有时,使这些测试可配置是必要和有用的,以便仅在数据库可用时执行这些测试。这可以通过例如构建属性来完成。


答案 2

您可以将DBUnit与HSQLDB一起使用,例如,HSQLDB可以从CSV文件中读取其初始数据。


推荐