Mamy aplikację wielomodułową. Gdzie mamy 3 projekty biblioteczne i 1 projekt uruchomienia.Raport pokrycia testu Android dla aplikacji wielomodułowej
module1 (Libraray) module2 (Libraray) zależy module1 module3 (Libraray) zależy module1
początku (nie ma żadnego kodu źródłowego jej tylko launcher dla wszystkich lib) zależy Module1 i modułu 2
W module 1 uzyskujemy dostęp do modułów moduł 2 i moduł 3 przy użyciu wzoru elewacji. Z tego względu musimy napisać wszystkie przypadki testowe w projekcie Launch, ponieważ mamy dostęp do wszystkich klas w projekcie uruchamiania, abyśmy mieli dostęp do wszystkich klas i przypadki testowe nie zawiedzie z powodu wyjątku NoClassDefException.
Kiedy piszemy przypadki testowe w projekcie Launch, jesteśmy w stanie uruchomić przypadki testowe i otrzymujemy raport wykonania jako 100% i tworzymy plik index.html ze wszystkimi szczegółami przypadków testowych, ale kiedy spróbuj wygenerować raport pokrycia, a następnie nie wyświetla żadnych danych do raportu pokrycia. Poniżej znajduje się mój plik gradle.
apply plugin: 'com.android.application'
apply plugin: 'jacoco'
android {
compileSdkVersion 22
buildToolsVersion "23.0.2"`
defaultConfig {
applicationId "com.test.mobile"
minSdkVersion 14
targetSdkVersion 17
multiDexEnabled true
testApplicationId "com.test.mobile.test"
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
repositories {
mavenCentral()
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
debug{
testCoverageEnabled true
}
}
dexOptions {
preDexLibraries = false
javaMaxHeapSize "4096M"
jumboMode = true
incremental false
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += "--main-dex-list=$projectDir\\multidex-main-dex-list.txt".toString()
}
}}
dependencies {
compile project(':module2')
compile project(':module3')
compile "com.android.support.test.espresso:espresso-idling-resource:2.2.1"
// Dependencies for local unit tests
testCompile "junit:junit:4.12" exclude group: 'com.android.support', module: 'support-annotations'
testCompile "org.mockito:mockito-all:1.10.19" exclude group: 'com.android.support', module: 'support-annotations'
testCompile "org.hamcrest:hamcrest-all:1.3" exclude group: 'com.android.support', module: 'support-annotations'
testCompile "org.powermock:powermock-module-junit4:1.6.2" exclude group: 'com.android.support', module: 'support-annotations'
testCompile "org.powermock:powermock-api-mockito:1.6.2" exclude group: 'com.android.support', module: 'support-annotations'
// Android Testing Support Library's runner and rules
androidTestCompile "com.android.support.test:runner:0.4.1" exclude group: 'com.android.support', module: 'support-annotations'
androidTestCompile "com.android.support.test:rules:0.4.1" exclude group: 'com.android.support', module: 'support-annotations'
// Espresso UI Testing dependencies.
androidTestCompile "com.android.support.test.espresso:espresso-core:2.2.1" exclude group: 'com.google.code.findbugs' exclude group: 'javax.annotation' exclude group: 'com.android.support', module: 'support-annotations' exclude module: 'javax.annotation-api'
androidTestCompile "com.android.support.test.espresso:espresso-contrib:2.2.1" exclude group: 'com.google.code.findbugs' exclude group: 'javax.annotation' exclude group: 'com.android.support', module: 'support-annotations' exclude module: 'javax.annotation-api' exclude group: 'com.android.support', module: 'support-v4'
androidTestCompile "com.android.support.test.espresso:espresso-intents:2.2.1" exclude group: 'com.google.code.findbugs' exclude group: 'javax.annotation' exclude group: 'com.android.support', module: 'support-annotations' exclude module: 'javax.annotation-api'}
task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') { def projects = new ArrayList() subprojects.each { prj -> projects.add(prj) }
reports {
xml.enabled = true
html.enabled = true
}
jacocoClasspath = configurations['androidJacocoAnt']
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
/*sourceDirectories = generateSourceFiles(projects)
classDirectories = generateClassDirs(projects)*/
executionData = files(["${buildDir}/jacoco/testDebugUnitTest.exec",
"${buildDir}/outputs/code-coverage/connected/coverage.ec"
])}
masz podobne zmiany w 'build.gradle' dla bibliotek? –
Poniżej znajduje się jeden z plików projektu lib.compadle. 'android { compileSdkVersion 22 buildToolsVersion" 23.0.2" defaultConfig { minSdkVersion 14 targetSdkVersion 17 multiDexEnabled prawdziwe } buildTypes { uwalnianie { minifyEnabled fałszywe proguardFiles getDefaultProguardFile ('PROGUARD-android.txt'), 'Proguard-project.txt' } } } ' } Informacje o przypadkach testowych nie są dostępne w projektach biblioteki –