Класс теста эспрессо не найден - PullRequest
0 голосов
/ 09 июля 2020

Я создал базовый 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'
}

Любая помощь приветствуется. Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Тестовый класс должен быть опубликован c. Вот почему это не сработало.

0 голосов
/ 10 июля 2020

Правило должно быть таким

@Rule
public ActivityTestRule<ConfigurationsActivity> mConfigsTestRule =
            new ActivityTestRule<>(ConfigurationsActivity.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...