web-dev-qa-db-ja.com

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

アプリにloginfacebookを追加しようとしています。しかし、これを行うために必要なリポジトリを追加したとき。エラーが発生しました。 AndroidJUnit4は現在解決できません。

ExampleInstrumentedTest.Java

package com.example.user.enyatravelbataan;

import Android.content.Context;
import Android.support.test.InstrumentationRegistry;
import Android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.*;

/**
 * Instrumentation test, which will execute on an Android device.
 *
 * @see <a href="http://d.Android.com/tools/testing">Testing documentation</a>
 */
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
    // Context of the app under test.
    Context appContext = InstrumentationRegistry.getTargetContext();

    assertEquals("com.example.user.enyatravelbataan", 
appContext.getPackageName());
}
}

これは私のビルドです:gradle(app)

apply plugin: 'com.Android.application'

 Android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
useLibrary 'org.Apache.http.legacy'


repositories {
    mavenCentral()
}

defaultConfig {
    applicationId "com.example.user.enyatravelbataan"
    minSdkVersion 16
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile(name: 'wikitudesdk', ext: 'aar')
// compile 'org.Apache.httpcomponents:httpclient:4.5'
// compile 'org.Apache.httpcomponents:httpcore:4.4.1'
compile files('libs/MD5Simply.jar')
compile files('libs/GenAsync.1.2.jar')
compile 'com.facebook.Android:facebook-Android-sdk:[4,5)'
compile 'com.Android.support:appcompat-v7:24.2.1'
compile 'com.Android.support:multidex:1.0.0'
compile 'com.google.Android.gms:play-services:9.8.0'
compile 'com.google.Android.gms:play-services-location:9.8.0'
compile 'com.google.Android.gms:play-services-appindexing:9.8.0'
compile 'com.Android.support:cardview-v7:24.2.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.Android.support:design:24.2.1'
compile 'com.Android.volley:volley:1.0.0'
compile 'com.Android.support:support-v4:24.2.1'

testCompile 'junit:junit:4.12'
}

repositories {
flatDir {
    dirs 'libs'
}
}
apply plugin: 'com.google.gms.google-services'

試す

androidTestCompile 'com.Android.support:support-annotations:23.1.0'
androidTestCompile 'com.Android.support.test:runner:0.4.1'
androidTestCompile 'com.Android.support.test:rules:0.4.1'

上記の依存関係セクションを追加します

configurations.all {
   resolutionStrategy.force 'com.Android.support:support-annotations:23.1.0'
}
8
Pehlaj

上記の回答に加えて、次の手順を厳守してください。

SQLite関数ユニットをテストするために、壁や目の前にあるオブジェクトに頭をぶつけていました。私が何をしても、インターネット全体の多くの賢明な人々がうまくいかなかったという提案にどれだけ厳密に従うかはうまくいきませんでした。

それから私は幼稚園に行って、私の愚かな間違いを理解するために最初からやり直す必要がありました。 AndroidJUnit4はInstrumentation Testでのみ使用でき、ローカルテストではJUnitを使用する必要があることを知りました。つまり、フォルダーはsrc/androidTest/Javaでなければなりません。私のテストクラスはandroidTestフォルダーの直下にあったため、この厄介なエラーに直面する必要がありました。しかし、src/androidTest/Javaの下に移動した瞬間、すべてが「」のように非常に明確になりました雨がなくなった」。

この記事を見てくださいこれは...

インストルメント済みユニットテストの実行インストルメント済みテストを実行するには、次の手順に従います。

ツールバーの[プロジェクトの同期]をクリックして、プロジェクトがGradleと同期していることを確認します。次のいずれかの方法でテストを実行します。単一のテストを実行するには、プロジェクトウィンドウを開き、テストを右クリックして[実行]をクリックします。クラス内のすべてのメソッドをテストするには、テストファイル内のクラスまたはメソッドを右クリックし、[実行]をクリックします。ディレクトリ内のすべてのテストを実行するには、ディレクトリを右クリックして[テストを実行]を選択します。 Android Plugin for Gradleは、デフォルトディレクトリ(src/androidTest/Java /)にあるインストルメント済みテストコードをコンパイルし、テストAPKと本番APKをビルドし、接続されたデバイスまたはエミュレータに両方のAPKをインストールします、テストを実行します。Android Studioは、インストルメント化されたテストの実行結果を[実行]ウィンドウに表示します。

したがって、計装テストの場合、フォルダは(ケースを忘れないでください)でなければなりません

src/androidTest/Java

ローカルテストの場合、フォルダーはでなければなりません

src/test/Java

その後、アプリパッケージと一致するパッケージフォルダーを作成できます

これがコミュニティに役立つことを願っています!

8
Vincy

(この問題が表面化した)もう1つの重要なことは、モジュールのbuild.gradletestBuildTypeオプションであるテストのビルドタイプを変更したかどうかを確認することです。
変更した場合(私と同じように)、編集する前にAndroidテスト:

  1. Android Studio build/flavors tab)に移動します
  2. testBuildType Gradleプロパティで指定したものと同じビルドタイプを選択します
  3. Sync Android Studio with Gradle

アプリを通常どおり再度実行するには、おそらく「デバッグ」に戻す必要があると思います。

注:これにより、ここでの質問で説明されているように私のコアの問題が修正されますが、Androidの両方のカスタムビルドタイプをサポートする方法を探していますテストだけでなく、デバッグビルドタイプも許可します。私の最終的な目標は、CIが特別なビルドタイプでテストを実行できるようにすることですが、開発者がそれらを「デバッグ」モードで実行できるようにします。セクションはあなたのものです:)

2
milosmns

私のために働いた解決策は、エミュレータを変更することです(使用しているAPIを使用するもの)。これを行うには、[実行]ボタンの横にあるエミュレータの記号(例:ピクセル2)をクリックし、[AVDマネージャを開く]に移動します(追加api uが必要(ex API 29))すべて

0
Alaa Bouraoui

私にとっては、一部のandroidTestImplementationインポートがbuild.gradleで最新ではなかったためです。それらをallを最新バージョンに更新した後、エラーはなくなりました。

注:

私のプロジェクトには複数のモジュールがあり、everyモジュールでそれらを更新する必要がありました。

0
Suragch

以下のような最新のAPIをお試しください

testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-ore:3.0.2'

それでも、運が悪ければ、testImplementation、androidTestImplementation、androidTestImplementationの代わりに「実装」を試して、Gradleで同期してください。

0
subhash gaikwad

Gradleにcompile "com.Android.support.test:runner:1.0.1"を追加するだけです。

0
DAVID KATHOH