Junit Arquillian:无法设置GlassFish嵌入式运行时

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

我尝试在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 <<< 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.