У меня есть проект, для которого я использую Room для хранения, и в настоящее время пытаюсь настроить тест для простой миграции.
Я выполнил шаги, описанные в https://medium.com/androiddevelopers/testing-room-migrations-be93cdb0d975, и получилтест, который выглядит следующим образом:
@RunWith(AndroidJUnit4::class)
class MigrationsTest {
private val DB_NAME = "test.db"
private lateinit var testHelper: MigrationTestHelper
@Before
fun setup() {
testHelper = MigrationTestHelper(
androidx.test.platform.app.InstrumentationRegistry.getInstrumentation(),
MyDatabase::class.java.canonicalName,
FrameworkSQLiteOpenHelperFactory()
)
}
@Test
fun testMigrate1_2() {
val db = testHelper.createDatabase(DB_NAME, 1)
db.close()
testHelper.runMigrationsAndValidate(DB_NAME, 2, true, MyDatabase.MIGRATION_1_2)
}
}
Однако при запуске теста на физическом устройстве я получаю следующее исключение:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/gson/GsonBuilder;
Сам MigrationTestHelper
выглядит нормально,и если я пытаюсь создать объект Gson
или GsonBuilder
в тесте, я получаю ту же ошибку.
В своих зависимостях я также добавил эти строки (используя Kotlin DSL):
dependencies {
...
androidTestImplementation("android.arch.persistence.room:testing:1.1.1")
androidTestImplementation("com.google.code.gson:gson:2.8.0")
}
Работает само приложение, хранилище работает как положено.
Как правильно включить Gson
и избежать этой ошибки?Неспособность легко проверить транзакции - это проблема для меня.