Junit Arquillian:无法设置GlassFish嵌入式运行时
我尝试在maven项目中使用Arquillian进行测试,但每次执行测试时都会出现以下异常:Junit Arquillian:无法设置GlassFish嵌入式运行时,junit,glassfish,junit4,jboss-arquillian,glassfish-embedded,Junit,Glassfish,Junit4,Jboss Arquillian,Glassfish Embedded,我尝试在maven项目中使用Arquillian进行测试,但每次执行测试时都会出现以下异常: Grave: Exception in command execution : java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.855 sec <<< FAILU
Grave: Exception in command execution : java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.855 sec <<< FAILURE!
Tests in error:
es.costa.service.test.magali.PersonaFactorTest: Could not setup GlassFish Embedded Runtime
Caused by: org.glassfish.embeddable.GlassFishException: PlainTextActionReporterFAILUREjava.lang.NoClassDefFoundError: javax/validation/ParameterNameProviderjava.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
java.lang.RuntimeException: Could not setup GlassFish Embedded Runtime
Grave:命令执行中的异常:java.lang.NoClassDefFoundError:javax/validation/ParameterNameProvider
测试运行:1,失败:0,错误:1,跳过:0,运行时间:0.855秒您的文件存在许多问题,我甚至不用尝试代码就可以看到这些问题。文件中缺少许多必要的步骤和配置
您没有从pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<arquillian.launch>glassfish-embedded</arquillian.launch>
</systemPropertyVariables>
</configuration>
</plugin>
您可以在以下位置获得完整的属性列表:
请特别注意您是在resourcesXml
属性中指定glassfish resources.xml
还是domain.xml
。通常,您可以将glassfish resources.xml
捆绑在应用程序war中
我建议你参考:
我删除了代码块:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>5.0.3.Final</version>
</dependency>
首先感谢你回复我的帖子:1)我不知道你这是什么意思?2) 在arquillian.xml对第1点的解释中正确指定了glassfish容器属性:在pom.xml中,arquillian容器需要知道要使用的实际容器,即glassfish、jboss等。它需要转到arquillian.xml,然后读取容器属性。此步骤启用了该链接。我如您所说添加了修改,但它给了我相同的错误,我更改了文件的位置:glassfish resources.xml
和test persistence.xml
和logging.properties
到ejbModule/src/test/resources glassfish embedded source folderPoint 1是可选的,因为在arquillian.xml
中只指定了一个容器,更具体地说,因为它被标记为默认值:default=“true”
。我这样做:。。。。JavaArchive jar=ShrinkWrap.create(JavaArchive.class,“es costa servi”).addPackage(PersonFactory.class.getPackage()).addPackage(IPersonFactoryLocal.class.getPackage()).addAsManifestResource(“test persistence.xml”,“META-INF/persistence.xml”).addAsManifestResource(“jbossas ds.xml”).addAsManifestResource(EmptyAsset.INSTANCE,“beans.xml”)代码>现在我成功地通过了测试,但是当我尝试在测试方法中使用systeme.out.println(IjectedEJB.getMessage)注入ejb时;它告诉我:shouldFindAllGamesUsingJpqlQuery(es.costa.service.all.test.opa.IjectedEJBTest)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC
"-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN"
"http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
<jdbc-resource pool-name="ArquillianEmbeddedH2Pool"
jndi-name="jdbc/arquillian"/>
<jdbc-connection-pool name="ArquillianEmbeddedH2Pool"
res-type="javax.sql.DataSource"
datasource-classname="org.h2.jdbcx.JdbcDataSource">
<property name="user" value="sa"/>
<property name="password" value=""/>
<property name="url" value="jdbc:h2:file:target/databases/h2/db"/>
</jdbc-connection-pool>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<arquillian.launch>glassfish-embedded</arquillian.launch>
</systemPropertyVariables>
</configuration>
</plugin>
<property name="resourcesXml">src/test/resources/domain.xml</property>
<property name="glassFishHome">${glassfish.managed.home}</property>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>5.0.3.Final</version>
</dependency>
ArquillianServletRunner not found. Could not determine ContextRoot from ProtocolMetadata, please contact DeployableContainer developer.