Robolectric はテストの実行中に Android ランタイムのアーティファクトをダウンロードできます。ビルドツールがプロジェクトの通常の依存関係を解決できたとしても、テスト時のこのダウンロードが同じプロキシを使っていることの証明にはなりません。

Robolectric 4.9.1 以降は、このダウンローダー向けに次のシステムプロパティを文書化しています。

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

テストを実行する JVM にこれらを渡します。認証なしの HTTP 中継を経由して許可される公開アーティファクトのダウンロードでは、これらのホストとポートのプロパティに HTTP プロキシ一覧のアドレスを使用します。Gradle の Groovy DSL を使う Android プロジェクトでは、関連する設定は次のようになります。

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

これはプロジェクトの既存のテスト設定と一緒に保ちます。Gradle のランチャーにだけ渡したプロパティは、フォークされたテスト JVM がそれを受け取った証拠にはなりません。

意図的に切断したテスト環境のために、Robolectric は robolectric.offline と robolectric.dependency.dir も文書化しています。この構成では、正しいランタイムアーティファクトを指定したディレクトリに配置する必要があります。Gradle 自身のオフラインキャッシュは、Robolectric のオフラインリゾルバが期待するディレクトリの代わりにはなりません。

関連記事