Класс RobolectricTestRunner не найден после обновления SDK и Gradle - PullRequest
0 голосов
/ 20 сентября 2018

Я обновил недавнее устаревшее приложение для Android следующим образом:

CompileSDK с 23 по 27 BuildTools с 23.0.2 по 27.0.3 SupportLibVersion с 23.0.2 до 27.1.1

ниже - мои предыдущие и текущиеsourceset и код параметров теста

sourceSets {

    main {
        assets.srcDirs = ['src/main/assets', 'src/main/assets/']
        java.srcDirs = ['src/main/java', 'src/main/java']
    }
    robolectric {
        java.srcDir file('src/test/java/')
        resources.srcDir file('src/test/resources')
    }
}

Текущая версия с «robolectric» изменена на «androidTest» и «testOptions», в противном случае она не будет компилироваться.

sourceSets {

    main {
        assets.srcDirs = ['src/main/assets', 'src/main/assets/']
        java.srcDirs = ['src/main/java', 'src/main/java']
    }
    androidTest {
        setRoot 'src/test/'
        java.srcDir file('src/test/java/')
        resources.srcDir file('src/test/resources')
    }
}

testOptions {
    unitTests {
        includeAndroidResources = true
    }
}

и вот какЯ интегрировал Robolectric

testImplementation 'org.robolectric:robolectric:3.3.2'

После внесения вышеуказанных изменений синхронизация gradle завершается успешно, но связанные с Robolectric классы не распознаются и не могут быть найдены.

Я попытался установить aapt2enabled как 'false', вв этом случае сама gradle-синхронизация завершается ошибкой, говоря, что aapt2 устарела и будет удалена в будущем.Пожалуйста, предложите мне любое решение.

1 Ответ

0 голосов
/ 22 ноября 2018

Ваш тестовый класс должен находиться не в каталоге «androidTest», а в каталоге «Local unit test» (https://developer.android.com/studio/test/),, т. Е. «Test» вместо «androidTest».

Потому что «androidTest "каталог предназначен только для инструментальных тестов, которые выполняются на аппаратном устройстве или эмуляторе. И преимущество Robolectric заключается в том, что ему не нужно запускаться на устройстве или эмуляторе. Таким образом, вы можете изменить" androidTest "на" test "в вашемgradle file или просто удалите все определение "androidTest {}" из вашего gradle файла, потому что src / test является путем по умолчанию для каталога "Local unit test".

Я мог бы решить проблему, просто переместив свой тесткласс из src / androidTest в src / test. Но вам также придется удалить определение "androidTest {}" из вашего файла Gradle.

...