chameleon 算法
使用Arquillian时,您需要做的一件事情就是定义要在哪个容器下执行所有测试。
这是通过在适配器的类路径中添加依赖项并取决于所使用的模式(嵌入式,托管或远程)来下载的来完成的。 他是应用程序服务器。 例如,当在嵌入式或托管模式下使用Wildfly时,就会发生这种情况。
使用Wildfly的pom.xml的示例可能是:
<dependencies>
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-arquillian-container-managed</artifactId>
<version>${version.org.wildfly}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>process-test-classes</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-dist</artifactId>
<version>${version.org.wildfly}</version>
<type>zip</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
注意,在先前的脚本中,您需要定义Arquillian适配器(在本例中为托管适配器),并使用maven-dependency-plugin下载Arquillian使用的Wildfly分发文件。
这种方法是好的并且行之有效,但是它具有三个缺点:
- 您需要在要使用Arquillian和Wildfly的每个构建脚本中重复所有这些行。
- 如果需要在另一个项目中使用另一个应用程序服务器,则需要知道需要哪个适配器工件,以及是否需要下载工件。 例如,在嵌入Jetty的情况下,无需下载任何发行版,只需设置嵌入的依赖项。
- 如果要针对多个应用程序服务器测试代码,则问题编号为2,并且开始处理配置文件。
<dependency>
<groupId>org.arquillian.container</groupId>
<artifactId>arquillian-container-chameleon</artifactId>
<version>1.0.0.Alpha7</version>
<scope>test</scope>
</dependency>
然后在src / test / resources中创建名为arquillian.xml的Arquillian配置文件,并进行以下配置:
<?xml version="1.0"?>
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/schema/arquillian"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<container qualifier="chameleon" default="true">
<configuration>
<property name="chameleonTarget">wildfly:9.0.0.Final:managed</property>
</configuration>
</container>
</arquillian>
注意,现在您只需要使用一个友好的属性chameleonTarget来定义要使用的容器,版本和模式。 在上一个示例中, Wildfly 9.0.0.Final具有托管适配器。
当使用此配置运行任何测试时, Chameleon将检查是否已下载Wildfly 9.0.0.Final发行版,如果未下载最终发行版,则将为Wildfly 9.0.0托管的适配器添加到类路径中,并最终像其他Arquillian一样执行测试测试。
如果要使用Payara而不是Wildfly会发生什么? 您只需要将chameleonTarget属性更改为payara:4.1.1.163:managed,例如以托管模式针对Payara 4.1.1运行测试。
- JBoss EAP 6.x,7.x
- WildFly 10.x,9.x,8.x
- JBoss AS 7.x
- GlassFish 3.1.2、4.x
- Payara 4.x
我们不断学习,
亚历克斯
我可以看到你,你的棕色皮肤在阳光下闪闪发光,我看到你走路很慢(夏天的男孩– Ataris)
翻译自: https://www.javacodegeeks.com/2016/09/arquillian-chameleon-sake-simplicity.html
chameleon 算法