Я создал базовый c тестовый класс Espresso, который выглядит следующим образом:
@LargeTest
@RunWith(AndroidJUnit4.class)
class ConfigurationsActivityTest {
@Rule
public ActivityTestRule<ConfigurationsActivity> mConfigsTestRule =
new ActivityTestRule<>(ConfigurationsActivity.class);
@Test
public void isInView() {
onView(withId(R.id.config_recyclerview)).check(matches(isDisplayed()));
}
}
Проблема в том, что когда я пытаюсь запустить этот тест, я получаю следующее сообщение об ошибке:
Класс не найден: "com.name.app.activities.ConfigurationsTest"
Я следил за этим ответом: Android Тест эспрессо: Класс не найден:. ..Очистите набор тестов и взгляните на мои конфигурации запуска. Похоже, что мой тест выполняется как модульный тест, хотя он инструментальный.
Другая проблема возникает, когда я удаляю конфигурации модульного теста, которые были созданы, когда я пытался запустить свой инструментальный тест, и пытаюсь чтобы создать конфигурацию инструментального тестирования для моего тестового класса: мастер не позволяет мне выбрать в качестве тестового класса мой инструментальный тестовый класс, содержащий приведенный выше тест. Проблема визуализирована здесь.
Я также посмотрел на этот ответ: Класс TestCase не найден Android Studio и подтвердил, что моя структура каталогов в main / java и androidTest / java - это одно и то же.
Кроме того, когда я слежу за тем, что было сделано в этом вопросе: Android Espresso: "Тест не найден", " Произошел сбой процесса " и создайте конфигурацию запуска для всего пакета, содержащего мой тестовый класс, и запустите его, я получу:
java .lang.RuntimeException: Delegate runner 'androidx.test .internal.runner.junit4.AndroidJUnit4ClassRunner 'для AndroidJUnit4 не может быть загружен.
Я подозреваю, что это как-то связано с моим импортом или зависимостями. Вот оба:
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.rule.ActivityTestRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
dependencies {
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.preference:preference:1.1.1'
testImplementation 'junit:junit:4.13'
testImplementation "org.mockito:mockito-core:3.3.1"
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0'
}
Любая помощь приветствуется. Спасибо!