java - 基于 JPA 的 JUnit 测试最佳实践

标签 java maven-2 jpa junit testng

这是一个有点奇怪的问题,但它已经困扰了我几个月了。我已经使用 Wicket + Hibernate(使用 Maven 构建)构建了一个基于 JPA 的 Web 应用程序,并且想直接测试 DAO 层。我创建了一个用于测试的特定 src/test/resources/META-INF/persistence.xml 文件,但一直与 WTP 等发生冲突。为了解决这些问题,我创建了一个单独的测试项目,单元测试位于其中。有没有更好的方法来管理 JPA 项目的单元测试,而无需在持久性文件之间进行决斗?

附录:其他测试框架(例如,TestNG)会让这更容易吗?

最佳答案

您不妨试试mockito .测试工作如下:

您使用 mockito 来“实现”EntityManager。代替真正的代码,您使用 mockito 的方法说“如果应用程序调用 getReference(),则返回此对象”。在后台,mockito 将创建一个代理实例,它拦截 Java 方法调用并返回您指定的值。调用其他方法将返回 null

模拟 createQuery() 之类的东西的工作方式相同,但您首先需要创建 Query 的模型,然后使用与 getReference( )(返回查询模型)。

由于您不使用真正的 EM,因此您不需要真正的 persistence.xml

一个更简单的解决方案是,如果您可以设置一些属性来更改 persistence.xml 文件的名称,但我认为这是不可能的。

其他一些可能有帮助的链接:

关于java - 基于 JPA 的 JUnit 测试最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234763/

相关文章:

java - 在单独的选项卡中打开多个 pdf 文件

java - Android 上停止 for 循环的按钮

java - UUID 字段上带有 JPA 的 Jaybird(char(16) 字符集八位字节)

java - 持久化扩展类的合适方式是什么?

java - 有哪些工具可以让我从 Java 转储和重新创建数据库?

java - 处理显示没有名为 AudioClip 的类

maven-2 - 使用 Maven 通过 SCP 上传文件失败

java - 从 Java 调用 Maven 目标

java - 为什么 "test-jar"需要 "mvn compile"依赖项

java - JPA 时间戳比较不起作用