白眼鏡のblog

新しく得た知見を備忘録的に書き連ねていく

Robolectricからのアクセス先リポジトリの設定

AndroidのUnitTestで一般によく使われているRobolectricですが、実行時にhttps://oss.sonatype.org/content/groups/public/へアクセスし必要なライブラリを取得してきています。
このアクセス先ですが、必要に応じて変更することができるというのは、公式のリファレンスのSystem Propertiesに記載がありますが以下のようにして変更することができます。

android {
  testOptions {
    unitTests.all {
      systemProperty 'robolectric.dependency.repo.url', 'https://local-mirror/repo'
      systemProperty 'robolectric.dependency.repo.id', 'local'
    }
  }
}

ktsを利用している場合はこんな感じ

android {
  testOptions {
    unitTests.all(KotlinClousure1<Test, Test>({
      also { 
        systemProperty( "robolectric.dependency.repo.url", "https://local-mirror/repo")
        systemProperty( "robolectric.dependency.repo.id", "local")
      }
    }, this))
  }
}

ですが、ここで接続するリポジトリに認証がついていた場合にID、パスワードを設定するにはどうすればいいのかということは明記されていません。
少し昔のバージョンであればhttps://stackoverflow.com/a/39360538ここにあるような設定を行う際にRemoteRepositoryのauthentication.userNameとauthentication.passwordに値を設定してあげれば問題なかったようですが、現在はDeprecatedになっています。

ですが、設定できなくなったわけではなく上記のコードのようにSystemPropertyに設定してあげれば問題ありません。
設定できる値ですが、MavenRoboSettingsを確認する限りおそらく以下の四つのようです。

結論として、認証が必要なリポジトリが必要な際は次のような設定になります。

android {
  testOptions {
    unitTests.all {
      systemProperty 'robolectric.dependency.repo.url', 'https://local-mirror/repo'
      systemProperty 'robolectric.dependency.repo.id', 'local'
      systemProperty 'robolectric.dependency.repo.username', 'user'
      systemProperty 'robolectric.dependency.repo.password', 'pass'
    }
  }
}