当前位置:  开发笔记 > 编程语言 > 正文

如何将JaCoCo Gradle插件与TestNG和JUnit一起使用?

如何解决《如何将JaCoCoGradle插件与TestNG和JUnit一起使用?》经验,为你挑选了1个好方法。

我正在开发一个项目,我们正在使用TestNG和JUnit进行测试.

不幸的是,在编写TestNG测试时,他们不会在JaCoCo Coverage报告中考虑.

我写了一个testng.gradle文件,我将其包含在每个build.gradle文件中(这是一个多模块项目):

task testNG(type: Test) { useTestNG() }
test.dependsOn testNG

JUnit和TestNG测试都以这种方式工作.

如果我写testng.gradle这样的话:

test {
    useTestNG()
}

JaCoCo工作正常,但显然只有TestNG测试才能执行.

我该如何解决?这是Gradle的JaCoCo插件中的错误吗?



1> Godin..:

似乎Gradle JaCoCo插件增强了testNG任务,因此它的执行使用了JaCoCo Java代理,但它忘记了更新jacocoTestReport任务,因此这个任务不会使用testNG任务执行结果.不知道这是错误还是故意,但下面提供了解决方案.

证明这一点

档案src/main/java/Example.java:

public class Example {
  public void junit() {
    System.out.println("JUnit");
  }

  public void testng() {
    System.out.println("TestNG");
  }
}

档案src/test/java/ExampleJUnitTest.java:

import org.junit.Test;

public class ExampleJUnitTest {
  @Test
  public void test() {
    new Example().junit();
  }
}

档案src/test/java/ExampleTestNGTest.java:

import org.testng.annotations.Test;

public class ExampleTestNGTest {
  @Test
  public void test() {
    new Example().testng();
  }
}

档案build.gradle:

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

repositories {
  mavenCentral()
}

dependencies {
  testCompile 'org.testng:testng:6.8.8'
  testCompile 'junit:junit:4.12'
}

task testNG(type: Test) {
  useTestNG()
}

test {
  dependsOn testNG
}

执行后gradle clean test jacocoTestReport -d你会在日志中看到

java ... -javaagent:.../jacocoagent.jar=destfile=build/jacoco/testNG.exec ...
...
java ... -javaagent:.../jacocoagent.jar=destfile=build/jacoco/test.exec ...

并且该目录build/jacoco包含两个文件- testNG.exectest.exec,对于testNGtest分别任务.JaCoCo报告仅显示test任务执行JUnit .

解决这个问题

指示任务testNG将执行数据写入同一文件test:

task testNG(type: Test) {
  useTestNG()
  jacoco {
    destinationFile = file("$buildDir/jacoco/test.exec")
  }
}

指示任务jacocoTestReport也使用testNG.exec文件:

jacocoTestReport {
  executionData testNG
}

我假设一般情况下应该针对多模块项目的情况做同样的事情,特别是在你的情况下,因为没有提供你的多模块项目设置的Minimal,Complete和Verifiable示例.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有