当前位置: 首页 > 面试题库 >

如何通过Eclipse在JUnit测试中使用persistence.xml和hibernate.cfg.xml?

侯和惬
2023-03-14
问题内容

在来这里提出这个问题之前,我一直在寻找答案。我的问题很简单:使用JPA实体管理器API时,我无法运行任何JUnit测试。看来我的测试未读取persistence.xml文件。

当我调用时new Configuration().configure().buildSessionFactory(),它就像一个超级按钮一样工作,但是在调用Persistence.createEntityManagerFactory("myapp")is
时抛出一个异常

javax.persistence.PersistenceException:在com.myapp.Test01上javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)处的javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)处没有名为myapp的EntityManager的持久性提供程序。
setUpBeforeClass(Test01.java:22)

我的JavaSE项目具有以下结构:

myapp
++src/main/java
   ++com.myapp.model
      ++// My entity classes are here
++src/test/java
   ++com.myapp
      ++Test01.java
++src/main/resources
  ++hibernate.cfg.xml
  ++META-INF 
    ++persistence.xml

persistence.xml看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    version="2.0">
    <persistence-unit name="myapp" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml"></property> 
        </properties>
    </persistence-unit>
</persistence>

您知道如何解决此问题吗?

非常感谢您的帮助。


问题答案:

我的猜测是那org.hibernate.ejb.HibernatePersistence不在您的类路径中。那不是在主要的Hibernate
jar中,而是在hibernate-entitymanager或类似的jar中。

在调用以下代码之前,可以在代码中进行几个快速实验Persistence.createEntityManagerFactory()

System.out.println(getClass().getResource("META-INF/persistence.xml"));

和:

System.out.println(Class.forName("org.hibernate.ejb.HibernatePersistence"));

检查Eclipse是否正在复制您的资源也是明智的。请执行“项目”>“清理”,然后在Eclipse构建输出目录中查找以查看persistence.xml是否在期望的位置。有时我会遇到Eclipse由于某种原因而不复制资源的情况。



 类似资料:
  • 问题内容: 我已经使用JUnit 4和spring-test库编写了一些JUnit测试。当我在Eclipse中运行测试时,可以正常运行并通过。但是,当我使用Maven运行它们(在构建过程中)时,它们无法给出与Spring相关的错误。我不确定是什么引起了问题,JUnit,Surefire或Spring。这是我的测试代码,spring配置以及从Maven获得的异常: PersonServiceTest

  • 问题内容: 我刚刚在Eclipse上第一次安装了插件m2e。 我编写了一个简单的JUnit(版本4)测试。我可以从Eclipse中运行它,但不能从pom.xml中运行它(alt单击,运行方式,Maven测试)。我想我需要告诉Maven搜索该课程,但我只是不知道如何。 另外,我在groupId“ junit”中找不到JUnit 4:只有版本3.8.1可用。我真的需要为3.x版本而不是4+版本编写测试

  • 所以我是JUnit的新手,我们必须用它来做家庭作业。我们的教授给了我们一个有一个测试类的项目。当我右键单击>Run as>JUnit Test,我会弹出一个错误,上面写着‘找不到JUnit tests’。我知道这里已经回答了这个问题(没有找到测试运行程序'JUnit4'的测试),但是关闭eclipse、重新启动、清理和构建似乎不起作用。下面是我的运行配置、构建路径和我试图测试的类的截图。

  • 我正在学习JUnit测试。我想在JUnit中测试getter和setter,但它不起作用。这是第一节课。 我需要如何更改以测试setter?我如何测试它?

  • 问题内容: 在Eclipse和Ant中运行Junit测试时,我遇到了差异。这是场景: 一切都按照Eclipse的预期运行,但是,当我运行了一个Ant构建脚本时,我无法获得准确的Junit报告。我对测试运行器和测试用例进行了几处更改(简而言之,我向所有测试用例中添加了Test suite()方法),这返回了一个新的Junit4TestAdapter,并让我们的自定义运行器执行RunNotifier.

  • 我想在gradle的项目中运行junit测试,并为sonnar runner存储结果。所有junit测试都位于名为“test”的文件夹中,该文件夹位于项目根目录中。 源集的一部分 Gradle版本-Gradle 1.12 当我运行命令时:。我有这样的东西 在我看来,似乎没有找到测试。Gradle也扫描源集中指定文件夹的子文件夹,对吗?哪里会有问题?如何为sonnar运行器存储测试结果,您更喜欢的方