使用Android项目中的Gradle,使用jacoco覆盖编译项目

时间:2015-01-30 10:48:24

标签: android-gradle jacoco

我有一个Android项目(生成一个apk)并使用SDK。 为了在我的项目中使用SDK,我将以下行放在build.gradle中:

compile project(':sdk')

然后,我使用Jacoco获取我在“myproject”项目中进行的测试的覆盖率报告(sdk没有测试)。我在build.gradle中添加了这一行(等等):

def coverageSourceDirs = [
    '../myproject/src/main/java',
    '../sdk/src/main/java'
]

但结果是我只在“myproject”项目上获得了报道,但我没有对sdk的类进行报道。

使用jacoco插件在myproject上进行测试是否可以覆盖sdk的行?

非常感谢!

2 个答案:

答案 0 :(得分:0)

您希望将要覆盖报告的包添加为“包含”。

def coverageSourceDirs = [**/src/main/java] 
task jacocoTestReport(type: JacocoReport, dependsOn: "connectedAndroidTest") {
     classDirectories = fileTree(
             dir: 'build/intermediates/classes',
             excludes: ['**/R.class',
                        '**/R$*.class',
                        '**/BuildConfig.*',
                        '**/Manifest*.*',
                        '**/*Activity*.*',
                        '**/*Fragment*.*'
             ],
             includes: ['**/path_to_your_app's_package/']
     )
     sourceDirectories = files(coverageSourceDirs)
     additionalSourceDirs = files(coverageSourceDirs)
     executionData = files('build/jacoco/connectedAndroidTest.exec') }

答案 1 :(得分:0)

我到了解决方案。 目前,我正在外部lib(app)中测试sdk,并且在build.gradle中编译并添加sdk作为依赖。 在我的sdk中,我使用匕首进行依赖注射,并在应用程序中使用黄油刀进行注射。 Dagger在build dex文件中生成一些$$。类,所以当你尝试运行jacocoTest而不排除注入模块时,你会有一些错误。 所以你必须排除这些文件。 此外,您还必须将类和源文件添加为主要源目录和类。

'\0'