web-dev-qa-db-ja.com

RobolectricはAPIレベル28をサポートしていません

この質問は他のスレッドの以前のバージョンで回答されていますが、現時点で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)が得られます。

14
Algar

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リリースがあるようです。

11
Algar

Algarの答えを完了するには、このようなテストクラスに注釈を付けることで、一時的にこのエラーを回避できます(その間、Robolectricがこれを修正 issue )。

@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class YourUnitTests {

...

}

Android API 27を使用してRobolectricを強制します。

13
Phil