Robolectric può scaricare artefatti di Android runtime mentre i test sono in esecuzione. Il fatto che uno strumento di build risolva correttamente le dipendenze ordinarie del progetto non dimostra che questo download durante il test usi lo stesso proxy.

Robolectric 4.9.1 e versioni successive documentano queste proprietà di sistema per quel downloader:

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

Passale alla JVM che esegue i test. Per i download pubblici di artefatti consentiti tramite un intermediario HTTP non autenticato, usa un indirizzo dalla lista di proxy HTTP in queste proprietà di host e porta. Per un progetto Android che usa il DSL Groovy di Gradle, la configurazione pertinente può essere:

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

Mantieni questo insieme alla configurazione di test esistente del progetto. Una proprietà fornita solo al launcher di Gradle non è prova che una JVM di test derivata l'abbia ricevuta.

Per un ambiente di test volutamente disconnesso, Robolectric documenta anche robolectric.offline e robolectric.dependency.dir. Quella disposizione richiede che gli artefatti di runtime corretti siano collocati nella directory specificata. La cache offline di Gradle non sostituisce la directory attesa dal resolver offline di Robolectric.

Articoli correlati