AndroidJUnit4.class устарела: как использовать androidx.test.ext.junit.runners.AndroidJUnit4?
Для моих контрольно-измерительных приборов я использовал
@RunWith(AndroidJUnit4.class)
от
import androidx.test.runner.AndroidJUnit4;
чтобы установить мои тестовые случаи. Теперь эта строка помечается как устаревшая с подсказкой для использования AndroidJUnit4
от
import androidx.test.ext.junit.runners.AndroidJUnit4
Однако, если я пытаюсь импортировать AndroidJUnit4
из названного пакета я получаю ошибку, что ext
не может быть решен.
У вас есть идея, какой пакет должен быть включен в Gradle для решения этой проблемы?
2 ответа
Я добавил следующую строку в мой файл Gradle:
androidTestImplementation "androidx.test.ext:junit:1.0.0"
Теперь все снова работает.
Если вы попробовали решение @MarcelGangwisch, и ваша сборка не может сказать, что он не может найти ресурс И вы также очистили / перестроили свой проект, и он все еще не работает, попробуйте это: (также на основе решения @KrzysztofDziuba)
В своем файле Gradle, где вы изменили зависимость, убедитесь, что вы добавляете ее как нужный вам тип, т.е.
Для тестов пользовательского интерфейса:
androidTestImplementation 'androidx.test.ext: junit: 1.1.0'
Для юнит-тестов:
testImplementation 'androidx.test.ext: junit: 1.1.0'
В моем случае я добавил это как оба, и теперь это работает.
Для меня сработали следующие шаги:
1. Заменить библиотеки androidx на размещенные здесь. мой последнийapp/build.gradle
выглядело так:
android {
...
defaultConfig {
...
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
}
dependencies {
...
testImplementation 'junit:junit:4.12'
// Core library
androidTestImplementation 'androidx.test:core:1.2.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
// Assertions
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.ext:truth:1.2.0'
androidTestImplementation 'com.google.truth:truth:0.42'
// Espresso dependencies
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Затем я вручную заменил импортированные модули в моем ExampleInstrumentTest.java
класс с последними классами:
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4ClassRunner.class)
public class ExampleInstrumentedTest {
...
@Rule
public final ActivityTestRule<MainActivity> main = new ActivityTestRule<>(MainActivity.class, true);
@Before
public void init() {
...
}
@Test
public void listCount() {
...
}
@Test
public void useAppContext() {
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
Assert.assertEquals("in.curioustools.aad_x_testing2", appContext.getPackageName());
System.out.println("useAppContext : Test Ran");
}
}
Меня беспокоил тот факт, что InstrumentationRegistery
class по-прежнему устарел. Так что я использовалInstrumentationRegistry.getInstrumentation().getTargetContext();
от androidx.test.platform.app.InstrumentationRegistry
учебный класс.
Решение
Добавьте эту строку в build.gradle:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ Изменить
AndroidJUnit4
кAndroidJUnit4ClassRunner
в тестовом классе
Предупреждение
Я получил ту же ошибку, но следующее решение не помогло мне:
File -> Invalidate Caches... и выберите Invalidate and Restart.
Я пробовал все приведенное выше, пока не зашел на официальный сайт Android, и они предложили импортировать из androidx.test.ext.junit.runners.AndroidJUnit4
вместо androidx.test.runner.AndroidJUnit4
, ссылка на сайт
Включите эти строки в модуль приложения build.gradle.
testImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.ext:junit:1.1.1'
В тестовом классе замените вашего тестового исполнителя на
import androidx.test.ext.junit.runners.AndroidJUnit4;
Если
InstrumentationRegistry.getTargetContext()
устарело использованиеInstrumentationRegistry
изandroidx.test.platform.app
как этоInstrumentationRegistry.getInstrumentation(). GetTargetContext()
В моем случае меняется androidTestImplementation
в testImplementation
помог. Я не знал разницу до прочтения этой разницы между Android и testImplementation и androidTestImplementation в build.gradle
Если вы импортировали эти тестовые библиотеки AnroidX, синхронизировали и перестроили проект, но импортированные пакеты все равно не были разрешены. Просто вспомните, как вы обновили свой проект до AndroidX, закройте Android Studio и удалите.idea
папку и снова откройте свой проект...
Это сработало для меня!
Док Android говорит -
Этот класс устарел.
используйте взамен androidx.test.ext.junit.runners.AndroidJUnit4.
Так что замените следующую строку -
androidTestImplementation 'androidx.test:runner:1.1.0'
с -
androidTestImplementation "androidx.test.ext:junit:1.0.0"