Robolectric kann Android-Runtime-Artefakte herunterladen, während Tests laufen. Dass ein Build-Werkzeug die gewöhnlichen Abhängigkeiten des Projekts erfolgreich auflöst, belegt nicht, dass dieser Download zur Testzeit denselben Proxy verwendet.

Robolectric 4.9.1 und später dokumentieren für diesen Downloader die folgenden Systemeigenschaften:

robolectric.dependency.proxy.host=proxy.example
robolectric.dependency.proxy.port=8080

Übergeben Sie sie an die JVM, die die Tests ausführt. Für öffentliche Artefakt-Downloads, die über einen nicht authentifizierten HTTP-Vermittler erlaubt sind, verwenden Sie eine Adresse aus der HTTP-Proxy-Liste in diesen Host- und Port-Eigenschaften. Für ein Android-Projekt mit Gradles Groovy-DSL kann die relevante Konfiguration so aussehen:

android {
    testOptions {
        unitTests.all {
            systemProperty 'robolectric.dependency.proxy.host', 'proxy.example'
            systemProperty 'robolectric.dependency.proxy.port', '8080'
        }
    }
}

Halten Sie dies bei der bestehenden Testkonfiguration des Projekts. Eine Eigenschaft, die nur dem Gradle-Launcher übergeben wird, ist kein Beleg dafür, dass eine abgezweigte Test-JVM sie erhalten hat.

Für eine bewusst getrennte Testumgebung dokumentiert Robolectric außerdem robolectric.offline und robolectric.dependency.dir. Diese Anordnung erfordert, dass die richtigen Runtime-Artefakte im angegebenen Verzeichnis bereitgestellt werden. Der eigene Offline-Cache von Gradle ersetzt nicht das Verzeichnis, das der Offline-Resolver von Robolectric erwartet.

Ähnliche Artikel