Не удается разрешить символ 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(приложение)

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'

8 ответов

Решение

Пытаться

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'
}

В дополнение к приведенному выше ответу, пожалуйста, убедитесь, что вы строго выполняете следующие действия:

Я бился головой о стену и / или любой объект, который я вижу перед собой, чтобы проверить функциональность модуля SQLite. Независимо от того, что я делаю, насколько строго следуйте советам, при условии, что мои многие мудрые люди по всему интернету не работали.

Затем мне пришлось пойти в дошкольное учреждение и начать заново, чтобы осознать свою глупую ошибку. Я узнал, что AndroidJUnit4 можно использовать только с Instrumentation Test, а JUnit нужно использовать для локальных тестов. При этом папка должна быть src/androidTest/java. У меня был тестовый класс прямо в папке androidTest, поэтому мне пришлось столкнуться с этой неприятной ошибкой. Тем не менее, в тот момент, когда я переместил его в папку src/androidTest/java, все стало очень ясно: "Я ясно вижу, что дождь уже прошел".

Взгляните на эту статью, в которой говорится...

Запустите инструментированные модульные тесты Для запуска ваших инструментальных тестов выполните следующие действия:

Убедитесь, что ваш проект синхронизирован с Gradle, нажав Синхронизировать проект на панели инструментов. Запустите тест одним из следующих способов: чтобы запустить один тест, откройте окно "Проект", затем щелкните тест правой кнопкой мыши и выберите "Выполнить". Чтобы протестировать все методы в классе, щелкните правой кнопкой мыши класс или метод в тестовом файле и выберите "Выполнить". Чтобы запустить все тесты в каталоге, щелкните правой кнопкой мыши каталог и выберите "Запустить тесты". Плагин Android для Gradle компилирует инструментированный тестовый код, расположенный в каталоге по умолчанию (src/androidTest/java/), создает тестовый APK и рабочий APK, устанавливает оба APK на подключенное устройство или эмулятор и запускает тесты. Затем Android Studio отображает результаты выполнения инструментированного теста в окне "Выполнить".

Поэтому, ребята, для контрольно-измерительной аппаратуры папка должна быть (не забудьте случай)

SRC / androidTest / Java

и для локальных тестов папка должна быть

SRC / тест / Java

После этого вы можете иметь свои папки для пакетов, соответствующие вашему пакету приложений.

Надеюсь, это поможет сообществу!

Если эта проблема возникает после перехода на AndroidX. Сделай это:-

1. Правильный импорт

      import androidx.test.runner.AndroidJUnit4

вместо

      import android.support.test.runner.AndroidJUnit4

2. Правильный метод

      Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();

вместо

      Context appContext = InstrumentationRegistry.getTargetContext()

Еще одна важная вещь (которая обнаружила для меня эту проблему) - проверить, изменили ли вы тип сборки для тестов - это будет testBuildType вариант в вашем модуле build.gradle,
Если вы изменили его (как у меня), то перед редактированием любых тестов Android:

  1. Перейдите на вкладку "Сборка / вкус" в Android Studio
  2. Выберите тот же тип сборки, который вы указали в testBuildType Gradle собственность
  3. Синхронизация Android Studio с Gradle

Чтобы снова запустить приложение в обычном режиме, вам, очевидно, потребуется переключиться обратно на "отладку".

Примечание. Несмотря на то, что это решает мою основную проблему, как описано здесь, я все еще ищу способ поддержки обоих пользовательских типов сборки для тестов Android, но также разрешаю отладочные типы сборки; моя конечная цель - заставить CI запускать тесты со специальным типом сборки, но позволить разработчикам запускать их в режиме "отладки". Так что, если у кого-то есть идея, как этого добиться, раздел комментариев - ваш. :)

Пожалуйста, попробуйте последний 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.

Для меня это было потому, что некоторые из androidTestImplementation импорт не был актуален в build.gradle. После того как я обновил их до последней версии, ошибка исчезла.

Замечания:

В моем проекте было несколько модулей, и мне приходилось обновлять их в каждом модуле.

Решение , которое сработало для меня, - это изменить эмулятор (тот, который использует api, который вы используете). Для этого щелкните символ emulatr рядом с кнопкой Run (например, Pixel 2), затем перейдите к Open AVD Manager (добавьте API, который вам нужен (например, API 29)) Вот и все

Просто добавь compile "com.android.support.test:runner:1.0.1" к твоему Gradle.

Другие вопросы по тегам