gpt4 book ai didi

gradle - 使用JaCoCo从代码覆盖率分析中排除单元测试

转载 作者:行者123 更新时间:2023-12-03 03:17:14 27 4
gpt4 key购买 nike

我正在将JaCoCo与Gradle一起使用。有什么方法可以从测试代码的代码覆盖率分析中排除某些单元测试? (请注意,我并不是要在覆盖率报告中隐藏单元测试或某些类,例如Filter JaCoCo coverage reports with Gradle中进行了讨论)。

我有一些测试,用于对必要条件进行一致性检查,换句话说,该测试很弱;该测试有望以任何方式通过。如果它失败了,那么经过测试的代码肯定会存在某种类型的错误,但是即使通过了它也不能保证代码是完全正确的(应该由另一个更强大的测试来检查,这应该考虑到代码覆盖率) 。因此,可以肯定的是,我想在gradle test中运行此单元测试,但不希望将其包含在测试代码的代码覆盖率分析中。

最佳答案

您可以对不同类型的测试使用不同的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的执行信息

report

关于gradle - 使用JaCoCo从代码覆盖率分析中排除单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60450246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com