使用Jacoco计算运行时加载的类的覆盖率

时间:2019-03-17 14:25:36

标签: java code-coverage jacoco

我有一个gradle项目,该项目使用Jacoco来报告代码覆盖率,并且具有以下目录结构:

 - src/
     - main
    |
    |
     - scripts
    |
    |
     - test/

scripts目录包含.groovy个文件,这些文件是在运行时加载的类,并在测试执行期间执行。我想看看测试执行期间实际上涵盖了.groovy文件的哪些部分。

下面是代码的简化版本:

main/java/Library.java文件:

class Library {

    void loadGroovyFile() throws Exception {
        final GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
        final Class clazz = groovyClassLoader.parseClass(new File("scripts/someScript.groovy"));

        // Call the doSomething methos
        clazz.getMethod("doSomething", null).invoke(clazz.newInstance());
    }
}

scripts/testScript.grrovy文件:

//This method is covered
void doSomething() {
    println("doing something")
}

//This method is uncovered
void doSomethingElse() {
    println("doing something else")
}

测试如下所示: test/java/LibraryTest.java

public class LibraryTest {
    @Test public void testLoadGroovyFile() throws Exception {
        Library classUnderTest = new Library();
        classUnderTest.loadGroovyFile();
    }
}

src文件夹中的所有源文件的覆盖率均已正确报告(按预期),而运行时类加载的文件的覆盖率未得到报告。

如何使用Jacoco报告运行时加载的文件类的代码覆盖率?

0 个答案:

没有答案