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
测试