Arquillian变色龙。 简化您的Arquillian测试
Arquillian Chameleon的誕生是為了簡(jiǎn)化Arquillian測(cè)試的配置。 我很自豪地宣布,使用1.0.0.CR2版本,我們不僅簡(jiǎn)化了Arquillian測(cè)試的配置方式,而且簡(jiǎn)化了編寫(xiě)方式。
在此新版本中,添加了三個(gè)新的簡(jiǎn)化:
- 您只需要使用1個(gè)(或最多2個(gè)依賴項(xiàng),以防您想使用自動(dòng)部署功能)
- 不必添加任何依賴關(guān)系來(lái)定義要用于運(yùn)行測(cè)試的應(yīng)用程序服務(wù)器。 甚至不必使用arquillian.xml文件來(lái)定義它。
- 不必使用ShrinkWrap來(lái)構(gòu)建您的程序包。 您仍然可以使用它,但是可以將創(chuàng)建程序包的過(guò)程委托給自定義SPI。
因此,讓我們開(kāi)始吧。
相依性
您只需要添加一個(gè)依賴關(guān)系,而不再需要添加Arquillian依賴關(guān)系+容器依賴關(guān)系。
<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運(yùn)行器和特殊注釋@ChameleonTarget來(lái)定義要使用的容器。 在此示例中,配置了具有托管模式的Wildfly 11 。
運(yùn)行此測(cè)試時(shí),將使用Arquillian Wildfly依賴項(xiàng)配置classpath,下載應(yīng)用程序服務(wù)器,然后像其他Arquillian測(cè)試一樣運(yùn)行。
您可以在https://github.com/arquillian/arquillian-container-chameleon#arquillian-chameleon-runner中了解有關(guān)此功能的更多信息。
自動(dòng)部署
Arquillan允許您定義Java SPI來(lái)描述應(yīng)如何創(chuàng)建檔案。 這實(shí)際上意味著,如果您提供自動(dòng)創(chuàng)建部署文件的實(shí)現(xiàn),則不需要@Deployment方法。
Arquillian Chameleon目前提供兩種實(shí)現(xiàn):
對(duì)于本示例,我將以多模塊項(xiàng)目為例,但是請(qǐng)注意,如果您創(chuàng)建一個(gè)無(wú)多模塊項(xiàng)目,則默認(rèn)設(shè)置可以完美地工作。
<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 {@ArquillianResourceURL url; }注意,根據(jù)您選擇的方法( File或Maven ),您需要在類路徑上添加實(shí)現(xiàn)。
在這種情況下,我選擇使用Maven方法,這意味著歸檔是通過(guò)構(gòu)建所有項(xiàng)目來(lái)生成的。
由于該示例,此測(cè)試特定于兩件事,需要對(duì)其進(jìn)行自定義(而不是默認(rèn)設(shè)置)。
第一個(gè)是pom位置。 默認(rèn)情況下, @ MavenBuild批注使用執(zhí)行測(cè)試的pom.xml。 對(duì)于多模塊項(xiàng)目,您不想從定義測(cè)試的模塊運(yùn)行構(gòu)建,而要從項(xiàng)目的根目錄運(yùn)行,因此您將獲得一個(gè)包含所有依賴項(xiàng)的完整檔案。 對(duì)于這種情況,您需要將其設(shè)置在何處。
第二個(gè)是生成用于部署的存檔的位置。 默認(rèn)情況下,您無(wú)需指定任何內(nèi)容,因?yàn)樵跊](méi)有多模塊項(xiàng)目的情況下,您僅生成一個(gè)文件。 但是對(duì)于多模塊項(xiàng)目,您將生成多個(gè)歸檔,因此需要指定哪個(gè)模塊包含最終歸檔。
就是這樣,當(dāng)您運(yùn)行此測(cè)試時(shí), Arquillian將下載Wildfly,啟動(dòng)它,運(yùn)行構(gòu)建以獲取最終的部署文件(例如.war),對(duì)其進(jìn)行部署并最終運(yùn)行該測(cè)試。
請(qǐng)注意,還沒(méi)有強(qiáng)制使用@DeploymentParameters批注,但允許您像使用@Deployment批注那樣配置部署,例如設(shè)置部署名稱或?qū)⑷萜?#xff08;默認(rèn)容器)的模式更改為作為客戶。
您可以在以下位置看到完整的示例: 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上了解有關(guān)自動(dòng)部署功能的更多信息。
結(jié)論
您會(huì)看到一切都已簡(jiǎn)化很多。 這個(gè)想法是為了提供您在運(yùn)行Spring測(cè)試時(shí)獲得的類似體驗(yàn)。
我們不斷學(xué)習(xí),
亞歷克斯
翻譯自: https://www.javacodegeeks.com/2018/03/arquillian-chameleon-simplifying-your-arquillian-tests.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Arquillian变色龙。 简化您的Arquillian测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 负离子是什么东西(其实它是一种天然净化因
- 下一篇: arraylist内存溢出_ArrayL