サンプルコードBasicRxJavaSampleを開きます(この記事から Room + RxJava )主なものは次のとおりです。
@Rule
public InstantTaskExecutorRule instantTaskExecutorRule =
new InstantTaskExecutorRule();
BasicRxJavaSampleはすべて大丈夫です。しかし、これをテストに適用することはできません。それが起こっていることです:
シンボルInstantTaskExecutorRuleを解決できません
また、手動インポートは機能しません。
しかし、そうでなければなりません
私のアプリbuild.gradle( ここにフルgradle ):
// tests
testImplementation 'junit:junit:4.12'
androidTestCompile "com.Android.support:support-annotations:$supportVersion"
testImplementation "Android.Arch.core:core-testing:$archVersion"
// Test helpers for Room
testImplementation "Android.Arch.persistence.room:testing:1.0.0"
// https://github.com/mockito/mockito
testImplementation 'org.mockito:mockito-core:2.13.0'
androidTestImplementation 'org.mockito:mockito-Android:2.13.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'com.Android.support.test:rules:1.0.1'
androidTestImplementation 'com.Android.support.test:runner:1.0.1'
// https://developer.Android.com/topic/libraries/testing-support-library/packages.html
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'
androidTestCompile 'com.Android.support.test.espresso:espresso-idling-resource:3.0.1'
TestImplementationをandroidTestImplementationに置き換えます。そのため、androidTestフォルダーのテストはライブラリーにアクセスできます。
dependencies {
androidTestImplementation "Android.Arch.core:core-testing:1.1.1"
}
遅れていることはわかっていますが、この受け入れられた答えに1つ付け加えたいと思います。
@Rule
public InstantTaskExecutorRule instantTaskExecutorRule =
new InstantTaskExecutorRule();
JUnitテストケース、つまりtest folderで、次の依存関係、つまりtestImplementationを使用します
dependencies {
testImplementation "Android.Arch.core:core-testing:1.0.0"
}
UIまたは統合テストケースにInstantTaskExecutorRule
を使用する場合は、androidTestImplementationを使用します。あれは:
androidTestImplementation "Android.Arch.core:core-testing:1.0.0"
両方に追加する場合は、androidTestImplementation&testImplementationを使用します。
androidTestImplementation "Android.Arch.core:core-testing:1.0.0"
testImplementation "Android.Arch.core:core-testing:1.0.0"
androidX移行の場合、追加
androidTestImplementation "androidx.Arch.core:core-testing:2.0.0"
この2つの依存関係をgradleファイルに入れてください、
dependencies {
// Test helpers for LiveData
testImplementation "Android.Arch.core:core-testing:1.0.0"
// Test helpers for Room
testImplementation "Android.Arch.persistence.room:testing:1.0.0"
}
詳細については、このリンクをご覧ください Android Architecture components integration guide
リンクされたライブラリの一部に矛盾があると思います。これを回避するには、blockingGet()とblockingFirst()を使用しました。
そして、最後に、私は https://developer.Android.com/training/testing/junit-runner.html#using-Android-test-orchestrator を使用しました
androidTestUtil 'com.Android.support.test:orchestrator:1.0.1'
これが必要なものです!
依存関係のテストの問題は、Gradleの構成によっては、適切なビルドバリアントの選択の問題になる場合があります。私の場合、テストはデバッグビルドバリアントに対してのみ構成されています。