【问题标题】:Exclude unit tests from code coverage analysis with JaCoCo使用 JaCoCo 从代码覆盖分析中排除单元测试
【发布时间】:2020-06-12 11:17:42
【问题描述】:

我正在使用带有 Gradle 的 JaCoCo。有没有办法从测试代码的代码覆盖分析中排除一些单元测试? (请注意,我并不是说从覆盖率报告中隐藏单元测试或某些类,这在例如Filter JaCoCo coverage reports with Gradle 中进行了讨论。

我有一些测试是对必要条件的一种一致性检查,换句话说,测试是;预计测试很可能以任何方式通过。如果失败了,测试的代码肯定有某种类型的bug,但即使通过了也不能保证代码完全正确(这应该通过另一个stronger测试来检查,即考虑到代码覆盖率)。所以我当然想在gradle test 中运行这个单元测试,但不喜欢将它包含在测试代码的代码覆盖率分析中。

【问题讨论】:

    标签: gradle jacoco


    【解决方案1】:

    您可以对不同类型的测试使用不同的 Gradle 任务。例如

    src/main/java/Example.java

    class Example {
        void weak() {
            System.out.println("weak");
        }
    
        void strong() {
            System.out.println("strong");
        }
    }
    

    src/test/java/StrongTest.java

    import org.junit.Test;
    
    public class StrongTest {
        @Test
        public final void test() {
            new Example().strong();
        }
    }
    

    src/test/java/WeakTest.java

    import org.junit.Test;
    
    public class WeakTest {
        @Test
        public void test() {
            new Example().weak();
        }
    }
    

    最后是build.gradle

    apply plugin: 'java'
    apply plugin: 'jacoco'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testImplementation 'junit:junit:4.13'
    }
    
    test {
        exclude 'WeakTest.class'
    }
    
    task weakTest(type: Test) {
        include 'WeakTest.class'
    }
    
    check.dependsOn weakTest
    

    默认test 任务将执行除WeakTest 之外的所有内容,并将使用JaCoCo 将执行信息收集到build/jacoco/test.exec

    自定义weakTest 任务将仅执行WeakTest,并将使用JaCoCo 将执行信息收集到build/jacoco/weakTest.exec

    默认 jacocoTestReport 将使用来自 build/jacoco/test.exec 的信息来生成 HTML 报告。

    这样执行

    gradle clean build jacocoTestReport
    

    使用 Gradle 6.2.1 将在目录 build/reports/jacoco/test/html/ 中生成以下报告,其中不包含有关执行 WeakTest 的信息

    【讨论】:

    • 很好.. 但这并不能回答问题 - 该人希望能够跳过 单元测试 - 即单个测试 - 而不是整个课程。
    • 鉴于该答案已被作者接受,IMO 它确实回答了这个问题 ;)
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    相关资源
    最近更新 更多