我有一个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的行?
非常感谢!
答案 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'