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/arquillianhttp://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.youtube.com/watch?v = Qt6Lkgs0kiU
翻译自: https://www.javacodegeeks.com/2016/09/arquillian-chameleon-sake-simplicity.html
chameleon 算法