web-dev-qa-db-ja.com

AndroidJUnit4とActivityTestRuleをユニットテストクラスにインポートできないのはなぜですか?

Android UIテストフレームワークの一部のインポートに問題があります-何が間違っているのかわかりません!

これは私のクラスです:

@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleUnitTest {

@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class);

@Test
public void listGoesOverTheFold() {
    onView(withText("Hello world!")).check(matches(isDisplayed()));
  }
}

しかし、何らかの理由で「シンボルActivityTestRuleが見つかりません」および「AndroidJUnit4シンボルが見つかりません」というエラーが表示されます。それらをインポートしようとしましたが、見つかりません。

Build.gradleの依存関係は次のように設定されます。

compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.4.0'
androidTestCompile 'com.Android.support:support-annotations:23.4.0'

androidTestCompile 'com.Android.support.test:runner:0.4'
androidTestCompile 'com.Android.support.test:rules:0.4'
androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.Android.support.test.uiautomator:uiautomator-v18:2.1.2'

だから私はすべての依存関係のセットアップを持っていると思う-私は多くのことを試してみましたが、運はありませんでした。

誰にもアイデアはありますか?

61
Hallupa

Androidで設定できるテストには2種類あります

単体テスト

  • これらはJVMで直接実行され、Androidフレームワーククラスにアクセスできません。
  • それらはtest/Javaパッケージに保持されます
  • コマンドtestCompileを使用してbuild.gradleファイルに依存関係を追加する必要があります
  • 通常、これらのテストにはMockito、RobolectricおよびJUnitを使用します

計測テスト

  • これらはAndroidエミュレーターで実行され、すべてのAndroidクラスに完全にアクセスできます。
  • それらはandroidTest/Javaパッケージに保持されます
  • 依存関係をandroidTestCompileでbuild.gradleに追加する必要があります
  • 通常、これらのテストにはEspressoとJUnitを使用します

Espressoを使用してインストルメンテーションテストを記述しようとしているが、ユニットテスト用のtest/Javaパッケージにテストがあることを伝えることができます。その場合、テストクラスをandroidTest/Javaパッケージに移動する必要があります。

51
Jahnold

これらを新しいバージョンに追加します。

androidTestImplementation 'com.Android.support.test:rules:1.0.2'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
109
Smaran

追加:

androidTestImplementation 'com.Android.support.test:rules:1.0.2'

問題を解決しますが、プロジェクトをgradleファイルと同期することを忘れないでください。その後、変更が有効になります。

28

依存関係を追加する必要があります

 testCompile 'com.Android.support.test:rules:0.5'
 testCompile 'com.Android.support.test:runner:0.5'
21
prodigy007

AndroidXに移行した場合、これを使用します。

androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'
20
peresisUser

依存関係を追加します。

androidTestCompile 'com.Android.support.test:rules:0.5'
androidTestCompile 'com.Android.support.test:runner:0.5'
8
velraj