【发布时间】:2012-04-17 10:54:28
【问题描述】:
我有实体,例如Product 聚合其他实体,例如 Category。这些实体还可以聚合其他实体等。现在我需要测试我对数据库的查询。
对于简单的 CRUD,我将创建 EntityManager 的模拟。但是,如果我有更复杂的查询,我需要测试其功能是否正确。然后我可能需要持久化实体(或更多实体)并尝试检索/更新,无论如何。我还需要保留我的 Product 所依赖的所有实体。
我不喜欢这样的做法。测试此类查询的最佳方法是什么?
感谢您的回复。
更新——示例
让我们假设以下实体结构
此结构由 JPA 实现维护。例如Product 类看起来像这样
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne
private Category category;
@ManyToOne
private Entity1 something;
}
所以现在如果我想测试DAO中使用的任何查询,我需要在数据库中创建Product,但它依赖于Category和Entity1,并且有@ManyToOne注释,所以值不能是@987654332 @。所以我也需要保留这些实体,但它们也有依赖关系。
我正在考虑在使用 SQL 脚本或 dbunit(@chalimartines 提到)进行测试之前预先创建实体,例如 Category、Entity1 和 Entity2,这将节省大量代码,但我不知道是否是好的解决方案。我想知道一些此类测试的最佳实践。
【问题讨论】:
标签: spring testing jpa mocking integration