Ошибка тестирования студийной студии 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'
}
Ответы
Ответ 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)
Надеюсь, это поможет кому-то, ура!