1

我正在尝试使用 Arquillian 来测试我的 JPA 存储库类。但是我只得到空指针异常告诉我它没有找到persistence.xml。如何在标准 Maven 项目中配置它?

4

3 回答 3

0

看起来您的 ShrinkWrap 部署在正确的路径中不包含 persistence.xml。persistence.xml 文件应该位于 JAR 的 META-INF 目录中,或者位于 WAR 的 WEB-INF/META-INF 目录中。您可以通过两种方式验证这一点:

  1. 通过Archive.toString(...)方法的详细标志:

    在您的@Deployment方法中,您可以使用该方法打印出存档的内容toString,例如

    @Deployment
    public static Archive<?> createDeployment() {
           WebArchive war = ShrinkWrap.create(WebArchive.class).addClasses(Foo.class);
           System.out.println(war.toString(true));
           return war;
    }
    
  2. 配置 Arquillian 以将生成的部署写入磁盘:

    您可以engine使用属性将配置元素添加到您的 arquillian.xml deploymentdeploymentExportPath,例如

    <engine>
        <property name="deploymentExportPath">target/deployment</property>
    </engine>
    

    这将指示 Arquillian 将其生成的部署写入 Maven 生成的目标目录下的子目录中。

于 2012-10-21T05:16:04.980 回答
0

在 github 上的展示项目中也有大量示例,包括 JPA 测试(也使用 Arquillian Persistence Extension)。

希望这会引导您走上正确的道路:)

于 2012-10-22T10:00:17.967 回答
0

你看过@这里的官方文档项目结构表明它是使用 Maven 构建的。

如果您仍然遇到问题,请发布异常消息。

祝你好运!

于 2012-10-20T22:41:55.367 回答