这个问题是在我决定将另一个实体添加到房间数据库之后出现的。架构正在预期目录中导出。所有的建筑。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"
}
因此,很明显gradle插件所做的事情与iSpect或文档中所说的有所不同,但事实并非如此。
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)
您应该将其包装在android中:
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation":
"$projectDir/schemas".toString()]
}
}
}
}
然后建立项目
还请确保在创建MigrationTestHelper
时插入实际的数据库。类
。我弄糊涂了,设置了我的实体。类
,从而导致相同的错误。
使用PaulWoitaschek发现的这种变通方法,我可以使用Robolectric 4.3:
在你的应用程序的build.gradle
上添加调试souceSets的模式目录
棒极了
sourceSets {
debug.assets.srcDirs += files("$projectDir/schemas".toString())
}
静态编程语言DSL
sourceSets {
getByName("debug").assets.srcDirs(files("$projectDir/schemas")) // Room
}
我的身材。gradle文件,我使用的是kapt,而不是java的注释处理器 exportSchema设置为true的My RoomDatase基类 数据库方案get已导出并保存为json文件[1]:https://i.stack.imgur.com/r3Iew.png 但我的迁移测试还是会出错 我已经尝试了这里的所有stackoverflow解决方案,如:
我的构建环境突然出现问题,我不知道为什么。我可以使用gradlew desktop运行我的项目:run然而,当我尝试使用右键单击run as desktop application(当然是在桌面项目上)从Eclipse运行项目时,它突然找不到我的包。阿特拉斯档案。毫无疑问,该文件存在。我已经多次刷新了我的eclipse项目,并且该项目使用gradle命令行运行良好。昨天天气很好。我能想到的唯一一件
我在我支持的许多应用程序中实现了Flyway,它像梦一样工作。 但是,当我将应用程序部署到测试环境时,迁移就停止了。 经过一些调查,我发现当迁移被加载到jar文件中时,它们不是通过Flyway定位的,而是当它们没有被压缩时(比如当我在Eclipse中工作时,或者如果我将jar解压到类路径中),它会按预期工作。 由于应用程序的插件架构,我无法使用“默认”设置,因此我将Flyway对象设置为: 如果要
方法:获取 现状:404 注意:URL应该是http://localhost:8080/dragonline/resources/img/icon.png()
我对Room或idk有一个问题,问题出在哪里,我需要帮助找出问题出在哪里,我使用的是Hilt DI,当创建数据库实例时它崩溃了,这是我的代码 错误 建筑格拉德尔 托多达塔。kt 托多达贝斯。kt ToDovidewModel。kt 应用模块。kt 添加片段。kt 这是我调用的函数,用于从AddFraank插入数据 我已经在这里看到了一些关于同一个问题的问题,但它对我不起作用,所以我想知道问题在哪里
我使用的是spring boot 1.4.4,我有一个测试类,比如: 这是我的application.yml: application.yml是读取的,因为我将该值存储在字符串路径值中,conf.json位于/src/main/resources和/src/test/resouces中 但我要做什么:mapper.readtree(新URL(路径));我得到错误:文件找不到。 我试过:“class