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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SonarQube 8.3.x中的Maven项目的测试覆盖率报告

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SonarQube 8.3.x中的Maven项目的测试覆盖率报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幾年前,我寫了一篇博客文章,介紹如何在SonarQube中生成測試報告,該報告獨立于單元測試和集成測試的測試報告中。 從SonarQube 6.2開始,測試報告不再在這些類別中分開(請參閱SonarQube的博客文章 )。 SonarQube將所有測試報告合并為一個涵蓋整體的測試報告。 因此,如果您在Maven項目中將單元測試(由Maven Surefire插件運行)和集成測試(由Maven Failsafe插件運行)分開進行測試,那么如何配置JaCoCo Maven插件。

在以下各節中,提出了滿足以下條件的解決方案:

  • Maven被用作構建工具。
  • 該項目可以是多模塊項目。
  • 單元測試和集成測試是每個模塊的一部分。
  • 測試覆蓋率由JaCoCo Maven插件測量。

下一部分的路線圖是,首先顯示了Maven項目結構,用于單元測試和集成測試的分離。 然后顯示了Maven項目配置,其中包含單獨的單元測試運行和集成測試運行。 之后,我們來看一下Maven項目配置,以生成涵蓋單元測試和集成測試的測試報告。 最后,SonarQube的儀表板中顯示了SonarQube的配置,用于測試報告的可視化。

Maven項目結構

首先,我們看一下默認的Maven項目結構在單個模塊項目中的樣子。

my-app ├── pom.xml ├── src │ ├── main │ │ └── java │ └── test │ └── java

目錄src / main / java包含生產源代碼,目錄src / test / java包含測試源代碼。 我們可以將單元測試和集成測試放到這個目錄中。 但是我們想將這兩種類型的測試放在單獨的目錄中。 因此,我們添加了一個名為src / it / java的新目錄。 然后將單元測試放在src / test / java目錄中,并將集成測試放在src / it / java目錄中,因此新的項目結構如下圖所示。

my-app ├── pom.xml ├── src │ ├── it │ │ └── java │ ├── main │ │ └── java │ └── test │ └── java

單元和集成測試運行

幸運的是,單元測試運行配置是Maven默認項目配置的一部分。 如果滿足以下條件,Maven將自動運行這些測試:

  • 測試位于目錄src / test / java和
  • 測試類名稱以Test開頭或以Test或TestCase結尾。

Maven在Maven的構建生命周期階段測試期間運行這些測試。

集成測試運行配置必須手動完成。 它存在可以提供幫助的Maven插件。 我們希望滿足以下條件:

  • 集成測試存儲在目錄src / it / java和
  • 集成測試類名稱要么以IT開頭,要么以IT或ITCase結尾 ,
  • 集成測試在Maven的構建生命周期階段進行集成測試。

首先,Maven必須知道它必須在其測試類路徑中包含目錄src / it / java 。 在這里,Build Helper Maven插件可以提供幫助。 它將目錄src / it / java添加到測試類路徑。

< plugin > < groupId >org.codehaus.mojo</ groupId > < artifactId >build-helper-maven-plugin</ artifactId > < version >3.1.0</ version > < executions > < execution > < goals > < goal >add-test-source</ goal > < goal >add-test-resource</ goal > </ goals > < configuration > < sources > < source >src/it/java</ source > </ sources > < resources > < resource > < directory >src/it/resources</ directory > </ resource > </ resources > </ configuration > </ execution > </ executions > </ plugin >

上面的代碼段必須插入到項目根pom中的<project> <build> <plugins>部分 。

Maven的構建生命周期包含一個稱為集成測試的階段。 在此階段,我們要運行集成測試。 幸運的是,當在POM中進行設置時,Maven故障安全插件的目標集成測試會自動綁定到此階段。 如果您希望在集成測試失敗時構建失敗,那么還必須將目標驗證添加到POM中:

< plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-failsafe-plugin</ artifactId > < version >3.0.0-M4</ version > < configuration > < encoding >${project.build.sourceEncoding}</ encoding > </ configuration > < executions > < execution > < goals > < goal >integration-test</ goal > < goal >verify</ goal > </ goals > </ execution > </ executions > </ plugin >

同樣,上述代碼片段也必須插入到項目根pom中的<project> <build> <plugins>部分 。 然后,當Maven故障保護插件的類名稱以IT開頭或以IT或ITCase結尾時,它們會自動運行集成測試。

測試報告生成

我們想使用JaCoCo Maven插件生成測試報告。 它應該為單元測試和集成測試生成測試報告。 因此,該插件必須要準備兩個分開的代理。 然后他們在測試運行期間生成報告。 Maven的構建生命周期包含自己的階段,可以在測試階段之前進行準備( 測試和集成測試 )。 測試階段的準備階段稱為過程測試類 , 集成測試階段的準備階段稱為pre-integration-test 。 當在POM中設置了目標prepare-agent和prepare-agent-integration時,JaCoCo會將其代理自動綁定到這些階段。 但這還不夠。 JaCoCo還必須創建一個報告,以便SonarQube可以讀取報告以進行可視化。 因此,我們必須在POM中添加目標報告和報告集成 :

< plugin > < groupId >org.jacoco</ groupId > < artifactId >jacoco-maven-plugin</ artifactId > < version >0.8.5</ version > < executions > < execution > < goals > < goal >prepare-agent</ goal > < goal >prepare-agent-integration</ goal > < goal >report</ goal > < goal >report-integration</ goal > </ goals > </ execution > </ executions > </ plugin >

同樣,它是<project> <build> <plugins>部分的一部分。

現在,我們可以運行目標mvn驗證,并且我們的項目已構建為包含單元和集成測試,并生成兩個測試報告。

SonarQube測試報告可視化

現在,我們想在SonarQube中可視化我們的測試報告。 因此,成功構建后,我們必須在我們的項目中運行Sonar Maven 3插件(命令mvn sonar:sonar )。 因此,Sonar Maven插件知道將報告上傳到何處,我們必須在?/ .m2 / setting.xml中配置SonarQube實例:

< profile > < id >sonar</ id > < activation > < activeByDefault >true</ activeByDefault > </ activation > < properties > <!-- Optional URL to server. Default value is http://localhost:9000 --> < sonar.host.url > http://localhost:9000 </ sonar.host.url > </ properties > </ profile >

在SonarQube儀表板中打開項目時,我們會看到總體測試覆蓋率報告。

摘要

該博客描述了如果單元測試和集成測試分別運行,如何為Maven構建生成測試報告。 在GitHub上 ,我托管了一個示例項目,演示了所有配置步驟。 作為技術環境,我使用

  • Maven 3.6.3
  • Maven插件:
    • Maven Surefire插件
  • SonarQube 8.3.1
  • Java 11

鏈接

  • Jacoco Maven插件項目站點
  • Maven故障安全插件項目站點
  • 構建助手Maven插件項目站點
  • SonarQube有關通用測試覆蓋率的文檔
  • GitHub上的示例Maven項目
  • 翻譯自: https://www.javacodegeeks.com/2020/06/test-coverage-reports-for-maven-projects-in-sonarqube-8-3-x.html

    總結

    以上是生活随笔為你收集整理的SonarQube 8.3.x中的Maven项目的测试覆盖率报告的全部內容,希望文章能夠幫你解決所遇到的問題。

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