我可以使用模拟检查db查询的返回值吗?

时间:2012-07-19 18:23:13

标签: java unit-testing testing easymock

因此,对于我的单元测试,我使用的是easymock。我有一个findProject方法,它查询数据库并返回项目列表。我已经模拟了返回entityManger的对象(我正在使用JPA和Hibernate)。所以它类似于:mockedRepository.findList(),它返回projectList。所以现在这是一个模拟的对象。所以在这些情况下我无法检查findList的返回值。对? Cuz是一个模拟对象,它只返回我想要的东西。因此,如果您想测试这种查询db的方法,我们就不能使用mocking。对?我可以检查是否已使用easyMocking调用方法。正确?

感谢。

3 个答案:

答案 0 :(得分:2)

我建议使用简单的内存中的Java SQL数据库,例如H2HSQL。而不是嘲笑。

答案 1 :(得分:1)

你至少有两个选择:

  1. 使用EntityManager创建您自己的实例Persistence.createEntityManagerFactory("persistence_unit_name").createEntityManager(),并在存根中使用它或注入正在测试的对象。
  2. 使用jpa-unit之类的东西为你做这件事。
  3. 我个人在我的项目中为每个查询使用第二个选项。我使用这个库来测试查询是否在没有任何解析异常的情况下执行。前段时间我试着测试查询是否返回了我想要返回的内容(这个lib也可以帮助你设置db并用测试数据填充它 - 比如dbunit)但是因为它很麻烦所以我放弃了它。

答案 2 :(得分:1)

  

因此,如果您想测试这种查询db的方法,我们就不能使用mocking。正确?

右。