0

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

谢谢。

4

3 回答 3

2

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

于 2012-07-20T14:05:31.890 回答
1

所以如果你想测试这种查询数据库的方法,我们不能使用模拟。正确的?

正确的。

于 2012-07-20T13:04:54.437 回答
1

你至少有两个选择:

  1. 使用创建您自己的实例并在您的存根中EntityManager使用Persistence.createEntityManagerFactory("persistence_unit_name").createEntityManager()它或注入被测对象。
  2. 使用类似jpa-unit的东西来为你做这件事。

我个人对项目中的每个查询都使用第二个选项。我使用这个库来测试查询是否在没有任何解析异常或其他东西的情况下执行。前段时间我试图测试查询是否返回了我希望它们返回的内容(这个库还可以帮助你设置数据库并用测试数据填充它 - 比如 dbunit),但由于它很麻烦,我放弃了它。

于 2012-07-19T19:14:44.480 回答