java – Jacoco仅为单个测试类生成覆盖率报告

前端之家收集整理的这篇文章主要介绍了java – Jacoco仅为单个测试类生成覆盖率报告前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

那么让我们说我有一个测试

@Test
public void testA(){
    new A().doSomthing();
}

让我们说它涵盖了一个方法doSomething(),现在在我的项目中,我有1000万个测试,而这个测试只是其中之一.一个小小的测试做得不多.

现在让我们说我的doSomething方法如下: –

public void doSomething() {
    if (var1)
        killMylSelf();
    else if (var2)
        killMyMother();
    else
        killMySelfAndMyMother();
}

因此,您可以看到方法中有很多分支,因此调用其他具有更多分支的方法.当我运行testA时,我想看看在执行的代码中我错过了哪些分支,如何在没有运行所有单元测试的情况下实现这一点,而且只关注我关注的测试,

当你回答这个问题而没有运行所有的单位测试时,请记住这些神奇的单词,而且只关注我关心的测试

最佳答案
JaCoCo不执行您的测试,它只是记录有关执行内容的信息.因此,测试的执行(包括单个测试的情况)完全取决于您用于执行测试的工具,遗憾的是在您的问题中未提及.

如果你使用Maven作为构建工具,那么测试的执行通常由maven-surefire-plugin完成并控制,它有option test来运行单独的测试.这是一个例子:

的src / main / JAVA / Example.java:

public class Example {
  public void doSomething(int p) {
    if (p == 1) {
      a();
    } else {
      b();
    }
  }

  private void a() {
    System.out.println("a");
  }

  private void b() {
    System.out.println("b");
  }
}

的src /测试/ JAVA / ExampleTest.java:

import org.junit.Test;

public class ExampleTest {
  @Test
  public void test1() {
    new Example().doSomething(1);
  }

  @Test
  public void test2() {
    new Example().doSomething(2);
  }
}

pom.xml中:

执行mvn clean verify -Dtest = ExampleTest#test1将在目录target / site / jacoco中生成以下报告:

coverage of test1

并执行mvn clean verify -Dtest = ExampleTest#test2将产生:

coverage of test2

它分别显示了test1和test2的覆盖范围.

为了比较 – 通过mvn clean verify执行所有测试会产生:

coverage of all tests

关于clean的用法的注意事项:文件target / jacoco.exec包含执行信息并用于生成报告(参见agent option destfilecorresponding parameter of jacoco-maven-plugin).默认情况下,JaCoCo代理会附加到此文件(请参阅agent option appendcorresponding parameter of jacoco-maven-plugin),以便在此示例中使用clean来防止此文件中有关先前执行的数据累积.

如果您使用Gradle,那么它也是has similar ability – 给定相同的源和build.gradle:

apply plugin: 'java'
apply plugin: 'jacoco'

repositories {
  mavenCentral()
}

dependencies {
  testCompile 'junit:junit:4.12'
}

执行gradle clean测试 – 测试ExampleTest.test1 jacocoTestReport将生成包含test1覆盖率的报告,这与Maven的情况相同.

与Maven的示例类似,在此示例中使用clean来防止在文件build / jacoco / test.exec-see append property of JaCoCo Gradle Plugin中累积有关先前执行的数据.

如果您使用Eclipse IDE,那么EclEmma Eclipse plugin在Eclipse IDE中集成了JaCoCo,默认情况下包含在“Eclipse IDE for Java Developers”中,从Oxygen(4.7)版本开始.有了它,您还可以在Eclipse IDE中获得单个测试的内容 – 在编辑器中右键单击测试名称获取上下文菜单并选择“Coverage As – > JUnit Test”.

原文链接:https://www.f2er.com/android/430180.html

猜你在找的Android相关文章