1

我在 Glassfish 环境中使用 Arquillian[1] 对我的代码进行单元测试。

在 glassfish 嵌入式环境中运行时,我已经设置了我的测试以正常工作。但是当我尝试在 remote-Glassfish-environment 中执行测试时,找不到 maven-Dependencies:

Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lorg/springframework/data/neo4j/support/Neo4jTemplate;

我的 ShrinkWrap 测试:

@Deployment
public static WebArchive createDeployment() {
    return ShrinkWrap.create(WebArchive.class).addPackages(true, "main.java")
            .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
}

为了解决 maven 依赖项,我使用了 shrinkwrap-resolver-bom:shrinkwrap-resolver-bom - 在我看来,在远程环境中运行测试时,maven 依赖项似乎不在类路径中。

我已将我的 pom.xml 上传到http://pastxt.com/P/9400A0KQSC

如何让我的测试在 Glassfish-remote-environment 中运行?

[1] http://arquillian.org/

4

1 回答 1

2

在您的 POM 中拥有 ShrinkWrap Resolver BOM 不足以启用 Arquillian 定位并将 Maven 工件添加到您的部署中。Maven BOM(物料清单)只是相关依赖项的容器

要使用 BOM,您需要在该dependencyManagement部分将 BOM 导入到项目 POm 中,并添加所需的依赖项。要添加 ShrinkWrap Maven 解析器,您需要添加shrinkwrap-resolver-depchain测试依赖项。

您需要使用 Maven 解析器来解析您需要的依赖项,然后将解析的工件添加到您的 ShrinkWrap 存档中。有关使用更新的 ShrinkWrap Maven 解析器 (2.x) 的更多详细信息,请参阅此社区常见问题解答帖子。请注意,Arquillian BOM (<= 1.0.3.Final) 引入了旧版本的 ShrinkWrap 解析器,因此您需要注意您引入的 ShrinkWrap Maven 解析器的版本。

于 2012-12-14T08:44:27.307 回答