web-dev-qa-db-ja.com

シンボルInstantTaskExecutorRuleを解決できません

サンプルコードBasicRxJavaSampleを開きます(この記事から Room + RxJava )主なものは次のとおりです。

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
    new InstantTaskExecutorRule();

BasicRxJavaSampleはすべて大丈夫です。しかし、これをテストに適用することはできません。それが起こっていることです:

シンボルInstantTaskExecutorRuleを解決できません

enter image description here

また、手動インポートは機能しません。

enter image description here

私のオートコンプリートは次のように動作します enter image description here

しかし、そうでなければなりません

enter image description here

私のアプリ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'
19
tim4dev

TestImplementationをandroidTestImplementationに置き換えます。そのため、androidTestフォルダーのテストはライブラリーにアクセスできます。

dependencies {
    androidTestImplementation "Android.Arch.core:core-testing:1.1.1"
}
37
Paulo Pereira

遅れていることはわかっていますが、この受け入れられた答えに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"

両方に追加する場合は、androidTestImplementationtestImplementationを使用します。

androidTestImplementation "Android.Arch.core:core-testing:1.0.0"

testImplementation "Android.Arch.core:core-testing:1.0.0"

17
Kavita_p

androidX移行の場合、追加

androidTestImplementation "androidx.Arch.core:core-testing:2.0.0"
16
Abhilash Das

この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

2
Fenil Patel

リンクされたライブラリの一部に矛盾があると思います。これを回避するには、blockingGet()blockingFirst()を使用しました。

そして、最後に、私は https://developer.Android.com/training/testing/junit-runner.html#using-Android-test-orchestrator を使用しました

androidTestUtil 'com.Android.support.test:orchestrator:1.0.1'

これが必要なものです!

0
tim4dev

依存関係のテストの問題は、Gradleの構成によっては、適切なビルドバリアントの選択の問題になる場合があります。私の場合、テストはデバッグビルドバリアントに対してのみ構成されています。

0
caitoo0o