我在Glassfish环境中使用Arquillian [1]来对我的代码进行单元测试。
我设置我的测试在glassfish嵌入式环境中运行时工作正常。但是当我尝试在远程Glassfish环境中执行测试时,找不到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中运行?
答案 0 :(得分:2)
在POM中使用ShrinkWrap解析器BOM不足以启用Arquillian定位并将Maven工件添加到您的部署中。 Maven BOM(物料清单)仅为a container for related dependencies。
要使用BOM,您需要将BOM导入dependencyManagement
部分的项目POm,并添加所需的依赖项。要添加ShrinkWrap Maven解析器,您需要添加shrinkwrap-resolver-depchain
测试依赖项。
您需要使用Maven解析程序来解析所需的依赖项,然后将已解析的工件添加到ShrinkWrap存档中。有关使用较新的ShrinkWrap Maven解析器(2.x)的更多详细信息,请参阅此community FAQ post。请注意,Arquillian BOM(< = 1.0.3.Final)会引入较旧版本的ShrinkWrap解析器,因此您需要注意所引用的ShrinkWrap Maven解析器的版本。