Эта проблема возникла после того, как я решил добавить еще одну сущность в базу данных комнаты. Схема экспортируется в ожидаемый каталог. Все настройки build.gradle сделаны и, кажется, работают, но это не так. Так как я получил:
java.io.FileNotFoundException: Cannot find the schema file in the assets folder. Make sure to include the exported json schemas in your test assert inputs.
See https://developer.android.com/training/data-storage/room/migrating-db-versions#export-schema for details. Missing file: com.company.companyapp.db.AppStore/1.json
Фактически обе схемы json генерируются, но исполнитель теста не может найти такие файлы. Вот настройка gradle:
testOptions.unitTests.includeAndroidResources = true
defaultConfig {
...
multiDexEnabled true
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/store".toString()]
}
}
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
android.compileOptions.sourceCompatibility 1.8
android.compileOptions.targetCompatibility 1.8
}
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/store".toString())
}
dependencies {
def roomVersion = '2.2.1'
// Other deps ...
implementation "androidx.room:room-runtime:$roomVersion"
implementation "androidx.room:room-rxjava2:$roomVersion"
annotationProcessor "androidx.room:room-compiler:$roomVersion"
testImplementation "androidx.room:room-testing:$roomVersion"
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation "androidx.test:core:$testCoreVersion"
androidTestImplementation "androidx.test.ext:junit:$extJUnitVersion"
testImplementation "androidx.test:core:$testCoreVersion"
testImplementation "androidx.test.ext:junit:$extJUnitVersion"
testImplementation "org.robolectric:robolectric:4.2.1"
}
Я также отмечаю, что Studio IDE отмечает держатель каталога схемы json
Изучая примеры миграции из комнаты GoogleЯ вижу, что есть разница, и речь не идет о названии.
Так что очень ясно, что плагин Gradle делает что-то отличное от моего спектра или документацииговорит, что должно работать, но это не так.
at androidx.room.testing.MigrationTestHelper.loadSchema(MigrationTestHelper.java:320)
at androidx.room.testing.MigrationTestHelper.createDatabase(MigrationTestHelper.java:152)
at com.company.companyapp.MigrationTest.migrate1To2(MigrationTest.java:32)