我有一个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报告运行时加载的文件类的代码覆盖率?