Arquillian变色龙。 简化您的Arquillian测试

Arquillian Chameleon的诞生是为了简化Arquillian测试的配置。 我很自豪地宣布,使用1.0.0.CR2版本,我们不仅简化了Arquillian测试的配置方式,而且简化了编写方式。

在此新版本中,添加了三个新的简化:

  • 您只需要使用1个(或最多2个依赖项,以防您想使用自动部署功能)
  • 不必添加任何依赖关系来定义要用于运行测试的应用程序服务器。 甚至不必使用arquillian.xml文件来定义它。
  • 不必使用ShrinkWrap来构建您的程序包。 您仍然可以使用它,但是可以将创建程序包的过程委托给自定义SPI。

因此,让我们开始吧。

相依性

您只需要添加一个依赖关系,而不再需要添加Arquillian依赖关系+容器依赖关系。

<dependency>
        <groupId>org.arquillian.container</groupId>
        <artifactId>arquillian-chameleon-junit-container-starter</artifactId>
        <version>${arquillian.chameleon.version}</version>
        <scope>test</scope>
</dependency>

容器的定义

@RunWith(ArquillianChameleon.class)
@ChameleonTarget("wildfly:11.0.0.Final:managed")
public class GameResourceRestApiTest {
}

您只需要使用ArquillianChameleon运行器和特殊注释@ChameleonTarget来定义要使用的容器。 在此示例中,配置了具有托管模式的Wildfly 11

运行此测试时,将使用Arquillian Wildfly依赖项配置classpath,下载应用程序服务器,然后像其他Arquillian测试一样运行。

您可以在https://github.com/arquillian/arquillian-container-chameleon#arquillian-chameleon-runner中了解有关此功能的更多信息。

自动部署

Arquillan允许您定义Java SPI来描述应如何创建档案。 这实际上意味着,如果您提供自动创建部署文件的实现,则不需要@Deployment方法。

Arquillian Chameleon目前提供两种实现:

  1. 文件,文件部署已创建的文件。 您需要设置文件的位置。
  2. 它运行使用嵌入的Maven该项目的构建和生成的存档Maven是作为部署档案库。

对于本示例,我将以多模块项目为例,但是请注意,如果您创建一个无多模块项目,则默认设置可以完美地工作。

<dependency>
        <groupId>org.arquillian.container</groupId>
        <artifactId>arquillian-chameleon-maven-build-deployment</artifactId>
        <version>${arquillian.chameleon.version}</version>
        <scope>test</scope>
</dependency>
@RunWith(ArquillianChameleon.class)
@ChameleonTarget("wildfly:11.0.0.Final:managed")
@MavenBuild(pom = "../../pom.xml", module = "gamepage/impl")
@DeploymentParameters(testable = false)
public class GameResourceRestApiTest {

    @ArquillianResource
    URL url;
}

注意,根据您选择的方法( FileMaven ),您需要在类路径上添加实现。

在这种情况下,我选择使用Maven方法,这意味着归档是通过构建所有项目来生成的。

由于该示例,此测试特定于两件事,需要对其进行自定义(而不是默认设置)。

第一个是pom位置。 默认情况下, @ MavenBuild批注使用执行测试的pom.xml。 对于多模块项目,您不想从定义测试的模块运行构建,而要从项目的根目录运行,因此您将获得一个包含所有依赖项的完整档案。 对于这种情况,您需要将其设置在何处。

第二个是生成用于部署的存档的位置。 默认情况下,您无需指定任何内容,因为在没有多模块项目的情况下,您仅生成一个文件。 但是对于多模块项目,您将生成多个归档,因此需要指定哪个模块包含最终归档。

就是这样,当您运行此测试时, Arquillian将下载Wildfly,启动它,运行构建以获取最终的部署文件(例如.war),对其进行部署并最终运行该测试。

请注意,还存在@DeploymentParameters注释,该注释不是强制性使用,而是允许您像使用@Deployment注释一样配置部署,例如,设置部署名称或将容器(默认容器)的模式更改为作为客户。

您可以在以下位置查看完整的示例: https : //github.com/lordofthejars/games-monolith/blob/master/gamepage/impl/src/test/java/org/lordofthejars/games/game/GameResourceRestApiTest.java

您也可以在https://github.com/arquillian/arquillian-core/blob/master/docs/deployment-archives.adoc#deployment-archives-using-java-spi上了解有关自动部署功能的更多信息。

结论

您会看到一切都已简化很多。 这个想法是为了提供您在运行Spring测试时获得的类似体验。

我们不断学习,

亚历克斯

翻译自: https://www.javacodegeeks.com/2018/03/arquillian-chameleon-simplifying-your-arquillian-tests.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值