日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java EE,Gradle和集成测试

發布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java EE,Gradle和集成测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在過去的幾年中,Apache Maven已成為Java和Java EE項目的事實上的構建工具。 但是從兩年前開始, Gradle便獲得了越來越多的用戶。 在我之前的文章( http://www.lordofthejars.com/2015/10/gradle-and-java-ee.html )之后,在這篇文章中,您將看到如何使用Gradle使用Java EE編寫集成測試Arquillian 。

Gradle是類似于Ant或Maven的構建自動化工具,但是引入了基于Groovy的DSL語言而不是XML。 因此,您可能希望生成文件是Groovy文件。 您可以閱讀我以前的文章( http://www.lordofthejars.com/2015/10/gradle-and-java-ee.html ),了解如何安裝Gradle 。

為了編寫Java EE的集成測試,事實上的工具是Arquillan。 如果您想了解Arquillian是什么,可以在( http://arquillian.org/guides/getting_started/ )或《 Arquillian In Action》一書中獲得《入門指南》 。

要開始使用Arquillian ,您需要添加Arquillian依賴項,它以BOM的形式出現。 Gradle不支持現成的BOM人工制品,但是您可以使用dependency-management-plugin Gradle插件來支持定義BOM 。

而且Gradle提供了添加除默認源之外的更多測試源集的可能性,在Maven中,默認源集是src / test / java和src / test / resources 。 這個想法是,您可以定義一個新的測試源集,以將所有集成測試放入其中。 通過這種方法,每種測試都可以清楚地分為不同的源集。 您可以在Gradle腳本中編寫Groovy代碼來實現此目的,也可以只使用gradle-testsets-plugin ,這是最簡單的方法。

因此,要注冊這兩個插件(依賴項和測試集),您需要在build.gradle腳本文件中添加下一個元素:

buildscript {repositories {jcenter()}dependencies {classpath "io.spring.gradle:dependency-management-plugin:0.5.3.RELEASE"classpath 'org.unbroken-dome.gradle-plugins:gradle-testsets-plugin:1.2.0'} }apply plugin: "io.spring.dependency-management" apply plugin: 'org.unbroken-dome.test-sets'

現在該添加Arquillian依賴項了。 您需要添加Arquillian BOM和兩個依賴關系,一個依賴關系設置我們將Arquillian與JUnit一起使用,另一個依賴關系將Apache TomEE應用程序服務器設置為在測試運行期間部署應用程序的目標。

用的Arquillian,TomEE和Java EE的依賴可能看起來像的build.gradle:

dependencyManagement {imports {mavenBom 'org.arquillian:arquillian-universe:1.0.0.Alpha1'} }dependencies {testCompile group: 'org.arquillian.universe', name: 'arquillian-junit', ext: 'pom'testCompile group: 'org.apache.openejb', name: 'arquillian-tomee-embedded', version:'1.7.2'testCompile group: 'junit', name: 'junit', version:'4.12'providedCompile group: 'org.apache.openejb',name: 'javaee-api', version:'6.0-6'}

最后,您可以通過添加下一部分將新的集成測試文件夾配置為源集:

testSets {integrationTests }

其中integrationTest是測試集的名稱。 testSets自動創建并配置下一個元素:

  • src / integrationTests / java和src / integrationTests / resources作為有效的源集文件夾。
  • 名為integrationTestsCompile依賴關系配置,其從testCompile延伸,另一種稱為integrationTestRuntime從testRuntime延伸。
  • 一個名為integrationTests的Test任務,它將運行集中的測試。
  • 一個名為IntegrationTestsJar的Jar任務,用于打包測試。

請注意,您可以將IntegrationTests更改為任何其他值,例如intTests,并且Gradle會將先前的元素自動配置為在testSets中設置的值(例如src / intTests / java) ,例如,測試任務將稱為intTests 。

下一步是在IntegrationTests測試集中使用Arquillian創建集成測試。 例如,用于驗證您可以在REST API中發布顏色并在調用GET方法時將其返回的Arquillian測試如下所示:

@RunWith(Arquillian.class) public class ColorServiceIntegrationTest {@Deploymentpublic static WebArchive createDeployment() {return ShrinkWrap.create(WebArchive.class).addClasses(ColorService.class);}@ArquillianResourceprivate URL webappUrl;@Test @RunAsClientpublic void postAndGet() throws Exception {// POST{final WebClient webClient = WebClient.create(webappUrl.toURI());final Response response = webClient.path("color/green").post(null);assertThat(response.getStatus(), is(204));}// GET{final WebClient webClient = WebClient.create(webappUrl.toURI());final Response response = webClient.path("color").get();assertThat(response.getStatus(), is(200));final String content = slurp((InputStream) response.getEntity());assertThat(content, is("green"));}}public static String slurp(final InputStream in) throws IOException {final ByteArrayOutputStream out = new ByteArrayOutputStream();final byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) != -1) {out.write(buffer, 0, length);}out.flush();return new String(out.toByteArray());}}

您現在可以通過簡單地執行gradlew integrationTests來運行集成測試

您會注意到,如果您運行gradlew build ,那么集成測試任務將不會運行。 發生這種情況是因為未在默認的構建生命周期內注冊任務。 如果要添加IntegrationTests任務以在構建期間自動執行,則需要添加下一行:

check.dependsOn integrationTestintegrationTest.mustRunAfter test

確保集成測試在檢查任務之前運行,并且如果集成測試失敗,則檢查任務會使構建失敗,并確保在集成測試之前運行單元測試。 這樣可以確保即使集成測試失敗也可以運行單元測試。

因此,現在當您運行gradlew build , gradlew build執行集成測試。

最后,如果您正在運行JaCoCo插件進行代碼覆蓋會發生什么? 您將獲得兩個JaCoCo文件,一個用于單元測試執行,另一個用于IntegrationTests執行。 但是,您可能希望看到兩者的匯總代碼覆蓋率報告都運行在一個文件中,因此您可以在執行各種測試后檢查應用程序的代碼覆蓋率。 要實現它,您只需要添加下一個任務:

task jacocoRootTestReport(type: JacocoReport) {sourceSets sourceSets.mainexecutionData files(["$buildDir/jacoco/test.exec","$buildDir/jacoco/integrationTests.exec"])reports {xml.enabled falsecsv.enabled false} }

在這種情況下,您將創建一個任務,該任務匯總test.exec文件(來自單元測試)和IntegrationTests.exec的覆蓋范圍結果(來自集成測試)。

為了生成報告,您需要在運行Gradle時顯式調用jacocoRootTestReport任務。

因此,編寫用于運行Java EE測試的Gradle腳本非常簡單,而更重要的是,最終腳本文件看起來非常緊湊且易讀,而無需嚴格遵守任何靜態約定。

翻譯自: https://www.javacodegeeks.com/2015/11/java-ee-gradle-integration-tests.html

總結

以上是生活随笔為你收集整理的Java EE,Gradle和集成测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。