没有内存数据库的单元测试dao层

时间:2017-11-02 13:54:41

标签: junit4

有没有办法在没有像h2这样的内存数据库中进行单元测试dao层?大多数例子都在内存数据库中用于dao调用。

1 个答案:

答案 0 :(得分:0)

这取决于你想在那里测试什么。

如果要验证查询执行的结果,则需要一些数据,这需要物理或内存数据库。您可以使用JDBC连接进行普通查询,或者使用Hibernate将EntityManager注入DAO层,然后对其进行测试。我认为内存数据库的一个优点是我们确切地定义了将使用哪些数据,而不是依赖于可能随时间变化的物理数据库数据。

从另一个角度来看,当涉及某些逻辑时,您可能想要检查查询的构造。为此,您不需要任何数据,Mockito方法拦截和ArgumentCaptor可能有助于获取构造的(本机或HQL)查询,然后您可以将结果与预期的查询进行比较。我已经看到了这样一个使用xml属性的解决方案,它也可以作为一种文档和回归测试来防止对敏感查询的意外更改。