この質問は他のスレッドの以前のバージョンで回答されていますが、現時点でapi 28を使用しても私にはうまくいかないようです。
すべてのRobolectricテストはapi 27で正常に機能しました。私のアプリapiターゲットが28の場合、すべて失敗します。
私が持っています
@Config(constants = BuildConfig::class, sdk = [Build.VERSION_CODES.P])
私のテストクラスで。
Robolectricsの内部SdkConfig.Java itは、api 28のサポートを追加するように見えます。
addSdk(Build.VERSION_CODES.P, "P", "4651975", "P");
ただし、デバッガーでそのコード行を評価する場合、_Build.VERSION_CODES.P
_は_10000
_に評価されます。何が起こっているのかわかりません。
私はRobolectric 3.8を実行していますが、4.0アルファ版も試してみました。
何が欠けていますか?
編集:今のところ、テストクラスに@Config(sdk = [Build.VERSION_CODES.O_MR1])
と注釈を付けることで、サポートされている最新の(私が知ることができる)APIバージョンで実行しています。これにより、Android 8.1.0(api 27)が得られます。
2番目の編集:これはスナップショットを卒業し、現在利用可能です
testImplementation 'org.robolectric:robolectric:4.0-beta-1'
つまり、Mavenスナップショットラインは不要です。
編集:これは修正され、スナップショットビルドで使用できるようになりました。あなたのgradleビルドファイル(アプリレベル)に追加します
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
そして
dependencies {
testImplementation 'org.robolectric:robolectric:4.0-alpha-3-SNAPSHOT'
}
この issue が寄稿者からの情報で更新されたので、今週中に fixes の問題である新しい4.0 alphaリリースがあるようです。
Algarの答えを完了するには、このようなテストクラスに注釈を付けることで、一時的にこのエラーを回避できます(その間、Robolectricがこれを修正 issue )。
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class YourUnitTests {
...
}
Android API 27を使用してRobolectricを強制します。