Подтвердить что ты не робот

Ошибка тестирования студийной студии Apple Studio: пустой тестовый комплект

При попытке выполнить мои тесты в Android Studio я столкнулся с следующей ошибкой: не удалось выполнить проверку: не удалось найти информацию об оборудовании для: ComponentInfo {.test/android.support.test.runner.AndroidJUnitRunner}

Мой тестовый класс находится в каталоге androidTest/java и имеет конструктор. Мой build.gradle тоже верен. Любая помощь приветствуется.

Класс тестирования

@RunWith(AndroidJUnit4.class)
@LargeTest
public class AndroidUITests extends ActivityInstrumentationTestCase2<UserActivity>{

    private UserActivity userActivity;

    public AndroidUITests() {
        super(UserActivity.class);
    }


    @Before
    public void setUp() throws Exception {
        super.setUp();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        userActivity = getActivity();
    }

    @Test
    public void testPhoneIconIsDisplayed() {
        // When the phone_icon view is available,
        // check that it is displayed.
        onView(ViewMatchers.withId(R.id.groupCreate)).perform(click())
                .check(matches(withText("Enter a name")));
    }
}

app/build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        testInstrumentationRunner
        "android.support.test.runner.AndroidJUnitRunner"
    }

    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

dependencies {
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
}
4b9b3361

Ответ 1

Вы должны обновить тест "Редактировать конфигурацию" и включить AndroidJUnitRunner в качестве инструмента запуска.

enter image description here

Я нашел решение в этом видео: https://youtu.be/TGU0B4qRlHY?t=9m36s

обновленный

Добавление того, что предлагает @loeschg: Убедитесь, что вы проверили логи logcat, чтобы убедиться, что что-то не вызывает проблем (сбой), прежде чем тест будет запущен. Неправильный код в блоке @BeforeClass может привести к появлению сообщения "Пустой набор тестов" в Android Studio, несмотря на то, что он правильно установил тестовый запуск.

Ответ 2

Пока вопрос уже дан, подумал, стоит ли размещать его для будущих посетителей.

Убедитесь, что проверьте журналы logcat, чтобы что-то не вызывало проблем (сбой) до того, как тест был запущен. У меня был плохой код в блоке @BeforeClass, в результате чего в Android Studio появилось сообщение "Empty Test Suite", несмотря на то, что он правильно установил тестовый бегун.

Ответ 3

Если вы получили такое сообщение об ошибке:

Class not found: "com.example.product.package.name.SomeSpecificTest" Empty test suite.

Вам необходимо убедиться, что ваш тест Espresso добавлен в разделе Android Instrumented Tests разделе " Run/Debug Configurations.

Похоже, что Android Studio 3.1.3 иногда неправильно добавляет его в раздел Android JUnit.

Убедитесь, что это выглядит примерно так: Run/Debug Configurations with Android Instrumented Tests and Android JUnit

Также стоит упомянуть, что я заметил, что эта проблема возникает у меня, когда выбран вариант сборки без Debug.

Ответ 4

Я уверен, что android.support.test.runner.AndroidJUnitRunner предоставляется библиотекой runner.

он должен выглядеть так

dependencies {
    ...
    androidTestCompile 'com.android.support.test:runner:0.2'
}

Ответ 5

Если кто-то все еще беспокоится об этом в 2018 году, вот рабочая установка:

build.gradle (обязательно):

<...snip...>

android {
    defaultConfig {
        <...snip...>
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        // ^^^ here it is (first)!
    }

<...snip...>

dependencies {
    <...snip...>

    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    // ^^^ all three required ^^^ (second)
}

И в инструментальных тестах (обязательно тоже):

import androidx.test.espresso.Espresso.onData
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.*
import androidx.test.espresso.assertion.ViewAssertions.*
import androidx.test.espresso.matcher.RootMatchers.*
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import org.hamcrest.Matchers.*
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
@LargeTest
class ApplicationTest {
    @Test
    fun thruStillThrullyThrue() {
        // do interaction with some UI
        onView(withId(R.id.myButtonOnMyActivity)).perform(click())

        // assert expected result
        onView(withId(R.id.myTextViewOnMyActivity)).check(matches(isDisplayed()))
    }
}

// (third)

Ответ 6

Моя проблема заключалась в том, что поле buildInstrumentationRunner указано в build.gradle (приложение). Измените это на androidx, если вы используете его (androidx.test.runner.AndroidJUnitRunner)

Надеюсь, это поможет кому-то, ура!