簡體   English   中英

測試代碼包含在覆蓋率報告中並影響覆蓋率

[英]Test code gets included in coverage report and skews coverate rate

我在 Azure DevOps 管道中使用 OpenClover。

問題:雖然在target/site/clover/index.html中給出的覆蓋率,當我在本地運行 clover 時,(可悲地)約為 45%,在 Azure DevOps 中為 71%。

原因是 AzDO 中基於target/site/clover.xml的覆蓋率報告還包括測試代碼,通常覆蓋率為 100%,因此導致結果偏差。

如何擺脫包含測試代碼的覆蓋率報告? 我試圖無濟於事的是在 ReportGenerator 中使用classfilters過濾器 - 它負責將 clover.xml 轉換為 Cobertura,以便 AzDO 可以解釋它。 以下都不起作用:

classfilters: '-*Test.java'
classfilters: '-*Test'
classfilters: '-*Test.class'

對於上下文,這是我的管道。

- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx1024m'
    mavenAuthenticateFeed: true
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.11'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: false
    goals: 'clean clover:setup test clover:aggregate clover:clover'

- task: reportgenerator@4
  inputs:
    reports: '$(Build.SourcesDirectory)/target/site/clover/clover.xml'
    classfilters: '-*Test'
    targetdir: '$(Build.SourcesDirectory)/CoverageResults'

- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(Build.SourcesDirectory)/CoverageResults/Cobertura.xml'

這是與三葉草有關的 pom 文件的一部分:

<build>
    <plugins>
        <plugin>
            <groupId>org.openclover</groupId>
            <artifactId>clover-maven-plugin</artifactId>
            <version>4.4.1</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>instrument</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

filefilters任務中使用文件過濾器而不是classfilters過濾器有效:

- task: reportgenerator@4
  inputs:
    reports: '$(Build.SourcesDirectory)/target/site/clover/clover.xml'
    filefilters: '-*Test.java'
    targetdir: '$(Build.SourcesDirectory)/CoverageResults'

從 ReportGenerator 4.6.4 開始,可以在沒有(脆弱)文件過濾器的情況下排除測試項目。

- task: reportgenerator@4
  inputs:
    reports: '$(Build.SourcesDirectory)/target/site/clover/clover.xml'
    customSettings: 'settings:excludeTestProjects=true'
    targetdir: '$(Build.SourcesDirectory)/CoverageResults'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM