私はAndroid上Parcelerライブラリに(https://github.com/johncarl81/parceler)Jacoco - アンドロイド
を使用していると私はまた、コードカバレッジのためJacocoを使用しています。
Caused by: java.io.FileNotFoundException: /Users/me/android/myapp/blah/app/build/intermediates/classes/demo/com/me/blah/appname/model/User$Parcelable$Creator$0.class (No such file or directory)
Userクラスは次のとおりです。:
は、しかし、今Jacocoと私のテストコードカバレッジを実行しているParcelerを追加した後、次のエラーで失敗し
@Parcel
public class User {
@SerializedName("firstName")
String firstName;
@SerializedName("lastName")
String lastName;
@SerializedName("profileImage")
ProfileImage profileImage;
@SerializedName("username")
String username;
// empty constructor needed by the Parceler library
public User() {
}
}
そして、私のJacocoファイルは、このようなものです:
apply plugin: 'jacoco'
android {
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
}
}
}
}
project.afterEvaluate {
android.applicationVariants.all { variant ->
def name = variant.name
def testTaskName = "test${name.capitalize()}UnitTest"
tasks.create(name: "${testTaskName}Coverage", type: JacocoReport, dependsOn: "$testTaskName") {
group = "Reporting"
description = "Generate Jacoco coverage reports for the ${name.capitalize()} build."
classDirectories = fileTree(
dir: "${project.buildDir}/intermediates/classes/${name}",
excludes: ['**/R.class',
'**/R$*.class',
'**/*$ViewInjector*.*',
'**/*$ViewBinder*.*',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*$ViewBinder*.*',
'**/*$ViewInjector*.*',
'**/Lambda$*.class',
'**/Lambda.class',
'**/*Lambda.class',
'**/*Lambda*.class',
'**/*InjectAdapter*.*',
'**/*StaticInjection*.*',
'**/*ModuleAdapter*.*']
)
sourceDirectories = files(['src/main/java'].plus(android.sourceSets[name].java.srcDirs))
executionData = files("${project.buildDir}/jacoco/${testTaskName}.exec")
reports {
xml.enabled = true
html.enabled = true
}
}
}
}
私は、生成されたパーセルファイルを私のJacocoファイルのリストを除外しますか?もしそうなら、どうしたらいいですか?私は様々なバリエーションを試しましたが、どれもうまくいかないようです。
エラーは、次のファイルが見つからないと文句を言い、次のよう
User$Parcelable$Creator$0.class
それは、代わりにファイルが生成される:
User$$Parcelable.class
誰もがこれを説明することはできますか?
働くあなたの創造主クラスの名前を確認してもらえますか?それはいくつかの '$'が欠けているようです。 'User $$ Parcelable $ Creator $$ 0.class'という名前にしてはいけませんか? –
生成されたファイルのビルド出力には?その確かにUser $$ Parcelable.class –
'Creator'内部クラスはどうですか?名前は何ですか?それは偶然にプロガードによって削除されていますか? –