通常在单元测试中,使用对象的模拟;但是如果 EntityManager 被模拟,应该如何为 JPA 实体编写单元测试?实际测试的是什么?
编辑:假设我想测试一个对象是否持久化;在生产代码中,为了持久性,可以使用容器提供的 EntityManager。对于这种类型的测试,是否应该模拟此 EntityManager,它应该是用于测试的资源本地测试,还是应该在容器中运行测试(测试运行由 Java 代码触发)?
通常在单元测试中,使用对象的模拟;但是如果 EntityManager 被模拟,应该如何为 JPA 实体编写单元测试?实际测试的是什么?
编辑:假设我想测试一个对象是否持久化;在生产代码中,为了持久性,可以使用容器提供的 EntityManager。对于这种类型的测试,是否应该模拟此 EntityManager,它应该是用于测试的资源本地测试,还是应该在容器中运行测试(测试运行由 Java 代码触发)?
实体代表数据。它可以有一些方法(除了 getter 和 setter),可以像任何其他方法一样进行单元测试。
如果你想测试实体是否可以被持久化并从数据库中检索(即它的映射被正确定义),那么你不应该模拟任何东西。有一个使用真实实体管理器和一个充满测试数据的数据库的测试,并尝试持久化和/或检索实体的实例。
在进行此类测试之前,您可以使用DbSetup(是的,此处为自我推销)在数据库中填充测试数据。