Не удается разрешить символ 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:
- Перейдите на вкладку "Сборка / вкус" в Android Studio
- Выберите тот же тип сборки, который вы указали в
testBuildType
Gradle собственность - Синхронизация 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.