Комната тестирования как тест JUnit, а не AndroidTest - PullRequest
1 голос
/ 19 июня 2019

Попытка проверить перенос комнаты с помощью класса MigrationTestHelper и Robolectric.Мы хотим, чтобы это был тест JUnit, потому что наша среда CI не может запустить эмулятор. (Пожалуйста, не отвечайте с исправлениями CI для эмуляторов, CI не в моем контроле) Единственная проблема, с которой я столкнулся, это то, что тест не пройден, потому что он не может найти схемы.Мой build.gradle уже содержит это

android {
    sourceSets {
        test.assets.srcDirs += files("$projectDir/schemas".toString())
        androidTest.assets.srcDirs += files("$projectDir/schemas".toString())

    test {
        java.srcDirs += "$projectDir/src/sharedTest/java"
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
        }
        unitTests.all {
            systemProperty 'robolectric.enabledSdks', '21'
        }
    }
}
dependencies {
   // has all the proper dependencies from mockito adn robolectric to kotlin and junit.
}

Вот тестовый код, но, опять же, его в основном просто схема не может быть найдена при вызове создания базы данных.Также файлы json находятся в каталоге схемы

@RunWith(RobolectricTestRunner::class)
class Migration19To20Test {
    private val migration = MyDatabase.MIGRATION_19_20
    private val fromVersion = 19
    private val toVersion = 20

    @get:Rule
    val helper: MigrationTestHelper = MigrationTestHelper(
            InstrumentationRegistry.getInstrumentation(),
            MyDatabase::class.java.canonicalName,
            FrameworkSQLiteOpenHelperFactory())

    private val testDatabaseName = "migration-test"

    @Test
    fun insertsFirmwareVersionFullColumn() {
        givenADatabase()

        val validateDroppedTables = true
        val db = helper.runMigrationsAndValidate(
                testDatabaseName,
                toVersion,
                validateDroppedTables,
                migration)

        db.query("select * from ${DatabaseConstants.Table.People}").use { cursor ->
            cursor.moveToFirst()
            assertTrue("table should contain the ${DatabaseConstants.Column.People.NAME_FULL} column as it should have been added",
                    cursor.columnNames.contains(DatabaseConstants.Column.People.NAME_FULL))
        }
    }

    private fun givenADatabase() {
        // Test fails here
        helper.createDatabase(testDatabaseName, fromVersion)
    }
}
...