Миграция комнаты: сбой в процессе тестирования

Предпосылки проблемы: сбой при тестировании миграции комнат -

Произошел сбой в процессе тестирования. Дополнительные сведения см. В файле MigrationTest # migrationFrom5To6_containsCorrectData.txt.

Образец взят из MigrationTest.java

Испытания - Мне не повезло, но вот то, что я пробовал до сих пор.

  • При отладке процесс выполнения теста идет бесконечно.

  • Если я просто попытаюсь поместить пару операторов печати в migrationFrom5To6_containsCorrectData, ничего не будет напечатано. Итак, я слепо догадываюсь, что в процессе установки что-то не так, а именно getMigratedRoomDatabase.

Сведения о текстовом файле

INSTRUMENTATION_RESULT: shortMsg=Process crashed.
INSTRUMENTATION_CODE: 0

КомнатаВерсия: 1.1.1-rc1

Тестовый класс

@RunWith(AndroidJUnit4.class) public class MigrationTest {

    @Rule public MigrationTestHelper testHelper =
        new MigrationTestHelper(InstrumentationRegistry.getInstrumentation(),
            SampleDb.class.getCanonicalName(), new FrameworkSQLiteOpenHelperFactory());

    private static final String TEST_DB_NAME = "test-db";

    private static final User FIRST_USER = createDummyUser(true);
    private static final User SECOND_USER = createDummyUser(false);

    @Test public void migrationFrom5To6_containsCorrectData() throws Exception {
        //Create the database in version 4
        SupportSQLiteDatabase db = testHelper.createDatabase(TEST_DB_NAME, 5);
        // Insert some data
        insertUser(FIRST_USER, db);
        insertUser(SECOND_USER, db);
        //Prepare for the next version
        db.close();

        // Re-open the database with version 6 and provide MIGRATION_4_6
        // and MIGRATION_5_6 as the migration process.
        testHelper.runMigrationsAndValidate(TEST_DB_NAME, 6, true, MIGRATION_2_6, MIGRATION_4_6,
            MIGRATION_5_6);

        // MigrationTestHelper automatically verifies the schema
        //changes, but not the data validity
        // Validate that the data was migrated properly.
        UserDao dbUser = getMigratedRoomDatabase().userDao();

        // getUsers return Flowable<List<User>>
        dbUser.getUsers().test().assertValueCount(2);
    }

    private SampleDb getMigratedRoomDatabase() {
        SampleDb database =
            Room.databaseBuilder(InstrumentationRegistry.getTargetContext(), SampleDb.class,
                TEST_DB_NAME).addMigrations(MIGRATION_2_6, MIGRATION_4_6, MIGRATION_5_6).build();
        // close the database and release any stream resources when the test finishes
        testHelper.closeWhenFinished(database);
        return database;
    }

    private void insertUser(User user, SupportSQLiteDatabase db) {
        ContentValues values = new ContentValues();
        values.put("userId", user.getUserId());
        // Bunch of other user values
        ...
        db.insert("user", SQLiteDatabase.CONFLICT_REPLACE, values);
    }

    private static User createDummyUser(boolean isFirst) {
        User dummy = new User();
        dummy.setData(2);
        return dummy;
    }
}

Не могли бы вы опубликовать журнал из logcat? Я попробовал образец, и он у меня сработал.

Anatolii 08.07.2018 08:49

@ user8035311 Спасибо, что указали на это. Похоже, проблема в моем коде миграции. Тем не менее, расследование

user3354265 08.07.2018 10:12
0
2
292
0

Другие вопросы по теме