Java arquillian耳整合试验

Java arquillian耳整合试验,java,glassfish,integration-testing,jboss-arquillian,payara,Java,Glassfish,Integration Testing,Jboss Arquillian,Payara,我有以下真实的项目结构: EAR - lib/commons.jar - lib/another dependencies - ejb.jar 我想用阿奎利安测试一下,但我总是会遇到一个例外 这是我构建EAR的java方法: @Deployment public static Archive<?> createTestArchive() { //create ear EnterpriseArchive ear = ShrinkWrap

我有以下真实的项目结构:

EAR
 - lib/commons.jar
 - lib/another dependencies
 - ejb.jar
我想用阿奎利安测试一下,但我总是会遇到一个例外

这是我构建EAR的java方法:

@Deployment
public static Archive<?> createTestArchive() {
    //create ear
    EnterpriseArchive ear = ShrinkWrap
            .create(EnterpriseArchive.class, "test-app.ear");

    // create ejb-jar
    JavaArchive ejb = ShrinkWrap
            .create(JavaArchive.class, "test-ejb.jar")
            .addPackage("a.b.ejb")
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");

    // resolve ejb dependencies
    File[] dependencies = Maven.resolver()
            .loadPomFromFile("pom.xml")
            .importDependencies(ScopeType.COMPILE, ScopeType.TEST)
            .resolve()
            .withTransitivity()
            .asFile();

    ear.addAsModule(ejb);
    ear.addAsLibraries(dependencies);
    ear.setApplicationXML("glassfish-resources.xml");

    LOGGER.debug("content: " + ear.toString(true));
    return ear;
}
JAR内容:

/a/
/a/b/
/a/b/ejb/
/a/b/ejb/MyEjb.class
...
/META-INF/
/META-INF/beans.xml
@RunWith(Arquillian.class)
public class EchoServiceBeanTest {

    @EJB
    private EchoService echoService;

    @Deployment
    public static Archive<?> createDeployment() {
        // create ear
        EnterpriseArchive ear = ShrinkWrap
                .create(EnterpriseArchive.class, "test-app.ear");

        // create ejb.jar
        JavaArchive ejb = ShrinkWrap
                .create(JavaArchive.class, "test-ejb.jar")
                .addPackages(true, "a.b.ejb")
                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
        LOGGER.debug("EJB content: " + ejb.toString(true));

        // build ear
        ear.addAsModule(ejb);

        LOGGER.debug("EAR deployment content: " + ear.toString(true));
        return ear;
    }

    @Test
    public void echo() throws Exception {
        Assert.assertNotNull(echoService);
        String expected = "hello";
        String returned = echoService.echo(expected);
        Assert.assertEquals(expected, returned);
    }
}
耳朵内容

/test-ejb.jar
/lib/
/lib/commons-444750341265461918.jar
/lib/slf4j-api-1.7.21.jar
/lib/slf4j-log4j12-1.7.21.jar
/lib/guava-21.0.jar
...
/lib/arquillian-testenricher-initialcontext-1.1.13.Final.jar
/lib/payara-embedded-all-4.1.1.171.0.1.jar
/lib/postgresql-42.0.0.jar
/META-INF/
/META-INF/application.xml
我得到“
ArquillianServletRunner未找到”
”错误的原因是EJB级别上存在错误

以下测试代码工作正常:

/a/
/a/b/
/a/b/ejb/
/a/b/ejb/MyEjb.class
...
/META-INF/
/META-INF/beans.xml
@RunWith(Arquillian.class)
public class EchoServiceBeanTest {

    @EJB
    private EchoService echoService;

    @Deployment
    public static Archive<?> createDeployment() {
        // create ear
        EnterpriseArchive ear = ShrinkWrap
                .create(EnterpriseArchive.class, "test-app.ear");

        // create ejb.jar
        JavaArchive ejb = ShrinkWrap
                .create(JavaArchive.class, "test-ejb.jar")
                .addPackages(true, "a.b.ejb")
                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
        LOGGER.debug("EJB content: " + ejb.toString(true));

        // build ear
        ear.addAsModule(ejb);

        LOGGER.debug("EAR deployment content: " + ear.toString(true));
        return ear;
    }

    @Test
    public void echo() throws Exception {
        Assert.assertNotNull(echoService);
        String expected = "hello";
        String returned = echoService.echo(expected);
        Assert.assertEquals(expected, returned);
    }
}
@RunWith(Arquillian.class)
公共类EchoServiceBeanTest{
@EJB
私人回声服务;
@部署
公共静态存档createDeployment(){
//造耳
EnterpriseArchive ear=保鲜膜
.create(EnterpriseArchive.class,“test app.ear”);
//创建ejb.jar
JavaArchive ejb=ShrinkWrap
.create(JavaArchive.class,“testejb.jar”)
.addPackages(true,“a.b.ejb”)
.addAsManifestResource(EmptyAsset.INSTANCE,“beans.xml”);
debug(“EJB内容:+EJB.toString(true));
//造耳
添加模块(ejb);
debug(“EAR部署内容:+EAR.toString(true));
回耳;
}
@试验
public void echo()引发异常{
Assert.assertNotNull(echoService);
字符串应为=“hello”;
返回的字符串=echoService.echo(应为);
Assert.assertEquals(预期,返回);
}
}
使用的maven依赖项:

<dependencies>
    <!-- provided jars -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!-- log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </dependency>
    <!-- arquillian -->
    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <version>1.1.13.Final</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
        <version>1.0.0.Final</version>
        <scope>test</scope>
    </dependency>
    <!-- embedded EE container -->
    <dependency>
        <groupId>fish.payara.extras</groupId>
        <artifactId>payara-embedded-all</artifactId>
        <version>4.1.1.171.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

爪哇
JavaEEAPI
7
假如
朱尼特
朱尼特
4.12
测试
log4j
log4j
org.jboss.arquillian.junit
arquillian junit容器
1.1.13.最终版本
测试
org.jboss.arquillian.container
arquillian-glassfish-embedded-3.1
1.0.0.1决赛
测试
鱼。帕亚拉。额外费用
帕亚拉嵌入了所有
4.1.1.171.1
测试
我得到“
未找到ArquillianServletRunner
”错误的原因是EJB级别上存在错误

以下测试代码工作正常:

/a/
/a/b/
/a/b/ejb/
/a/b/ejb/MyEjb.class
...
/META-INF/
/META-INF/beans.xml
@RunWith(Arquillian.class)
public class EchoServiceBeanTest {

    @EJB
    private EchoService echoService;

    @Deployment
    public static Archive<?> createDeployment() {
        // create ear
        EnterpriseArchive ear = ShrinkWrap
                .create(EnterpriseArchive.class, "test-app.ear");

        // create ejb.jar
        JavaArchive ejb = ShrinkWrap
                .create(JavaArchive.class, "test-ejb.jar")
                .addPackages(true, "a.b.ejb")
                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
        LOGGER.debug("EJB content: " + ejb.toString(true));

        // build ear
        ear.addAsModule(ejb);

        LOGGER.debug("EAR deployment content: " + ear.toString(true));
        return ear;
    }

    @Test
    public void echo() throws Exception {
        Assert.assertNotNull(echoService);
        String expected = "hello";
        String returned = echoService.echo(expected);
        Assert.assertEquals(expected, returned);
    }
}
@RunWith(Arquillian.class)
公共类EchoServiceBeanTest{
@EJB
私人回声服务;
@部署
公共静态存档createDeployment(){
//造耳
EnterpriseArchive ear=保鲜膜
.create(EnterpriseArchive.class,“test app.ear”);
//创建ejb.jar
JavaArchive ejb=ShrinkWrap
.create(JavaArchive.class,“testejb.jar”)
.addPackages(true,“a.b.ejb”)
.addAsManifestResource(EmptyAsset.INSTANCE,“beans.xml”);
debug(“EJB内容:+EJB.toString(true));
//造耳
添加模块(ejb);
debug(“EAR部署内容:+EAR.toString(true));
回耳;
}
@试验
public void echo()引发异常{
Assert.assertNotNull(echoService);
字符串应为=“hello”;
返回的字符串=echoService.echo(应为);
Assert.assertEquals(预期,返回);
}
}
使用的maven依赖项:

<dependencies>
    <!-- provided jars -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!-- log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </dependency>
    <!-- arquillian -->
    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <version>1.1.13.Final</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
        <version>1.0.0.Final</version>
        <scope>test</scope>
    </dependency>
    <!-- embedded EE container -->
    <dependency>
        <groupId>fish.payara.extras</groupId>
        <artifactId>payara-embedded-all</artifactId>
        <version>4.1.1.171.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

爪哇
JavaEEAPI
7
假如
朱尼特
朱尼特
4.12
测试
log4j
log4j
org.jboss.arquillian.junit
arquillian junit容器
1.1.13.最终版本
测试
org.jboss.arquillian.container
arquillian-glassfish-embedded-3.1
1.0.0.1决赛
测试
鱼。帕亚拉。额外费用
帕亚拉嵌入了所有
4.1.1.171.1
测试