Как запустить Robolectri c на Java9 (используется openjdk: 9 docker image) - PullRequest
0 голосов
/ 02 марта 2020

Я успешно настроил образ docker с JDK 9 и инструментами командной строки Android для linux. При запуске моего набора тестов (gradlew testDebug) с использованием Robolectri c тесты не пройдены (я попробовал как старую версию, которая работала (4.2.1), так и более новую (4.3.1).

В начале журнала сборки есть несколько предупреждений:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.robolectric.util.ReflectionHelpers (file:/builds/my-project/.gradle/caches/transforms-2/files-2.1/238170c6932e17f998749d5c97f6dcf4/jetified-shadowapi-4.2.1.jar) to field java.lang.reflect.Field.modifiers
WARNING: Please consider reporting this to the maintainers of org.robolectric.util.ReflectionHelpers
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Я включил все виды ведения журнала (также добавлено --stacktrace для задачи gradle):

    testOptions {
        unitTests.includeAndroidResources = true
        unitTests.returnDefaultValues = true
        unitTests.all {
            // https://stackoverflow.com/a/59772747/1859486
            systemProperty 'robolectric.dependency.repo.url', 'https://my-repo-that-has-everything.com/'
            systemProperty 'robolectric.logging.enabled', true
        }
    }

Even Итак, все, что я получаю, это:

com.mycompany.FooTest > foo FAILED
    org.apache.tools.ant.BuildException at DependenciesTask.java:268
        Caused by: org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException at DefaultArtifactResolver.java:360

Это работает локально ... (Windows 10)

Есть идеи, что может быть не так и что я могу сделать?

Для справки, вот мой конфиг зависимости Gradle (пробовал 4.2.1 и 4.3.1 с одинаковым результатом):

    testImplementation('org.robolectric:robolectric:4.2.1') {
        // https://github.com/robolectric/robolectric/issues/5245
        exclude group: 'com.google.auto.service', module: 'auto-service'
    }

Обновление 1: При запуске одного из неудачных тестов в Android Studio я вижу это (примечание: это Robolectri c 4.2.1, 4.3.1 имеет немного другую зависимость, но с тем же результатом ):

Downloading: org/robolectric/android-all/Q-robolectric-5415296/android-all-Q-robolectric-5415296.pom from repository sonatype at https://oss.sonatype.org/content/groups/public/
Error transferring file: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
[WARNING] Unable to get resource 'org.robolectric:android-all:pom:Q-robolectric-5415296' from repository sonatype (https://oss.sonatype.org/content/groups/public/): Error transferring file: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
Downloading: org/robolectric/android-all/Q-robolectric-5415296/android-all-Q-robolectric-5415296.pom from repository central at http://repo1.maven.org/maven2

Обновление 2: Я нашел обходной путь, позволяющий обойти эту проблему до , а не установить testOptions.unitTest.includeAndroidResources = true

...