Я бьюсь головой об стену, пытаясь понять, почему IntelliJ / Android сообщает «Пустой набор тестов». У меня есть небольшой проект с двумя модулями IntelliJ («Проекты» в Eclipse). В модуле модульного теста есть собственный файл AndroidManifest.xml, который я вставил внизу. Я пытаюсь запустить ActivityUnitTestCase
, поскольку тесты будут зависеть от Context
-object.
Имя пакета основного модуля - nilzor.myapp
. Имя пакета тестового модуля:nilzor.myapp.tests
Почему testBlah()
средство выполнения тестов не определяет -метод как тест?
<?xml version="1.0" encoding="utf-8"?>
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nilzor.myapp.tests"
android:versionCode="1"
android:versionName="1.0">
<!-- We add an application tag here just so that we can indicate that
this package needs to link against the android.test library,
which is needed when building test cases. -->
<application>
<uses-library android:name="android.test.runner"/>
</application>
<!--
This declares that this application uses the instrumentation test runner targeting
the package of nilzor.myapp. To run the tests use the command:
"adb shell am instrument -w nilzor.myapp.tests/android.test.InstrumentationTestRunner"
-->
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="nilzor.myapp"
android:label="Tests for nilzor.myapp"/>
</manifest>
А вот и мой тестовый класс :;
package nilzor.myapp.tests;
public class NilzorSomeTest<T extends Activity> extends ActivityUnitTestCase<T>{
public NilzorSomeTest(Class<T> activityClass){
super(activityClass);
}
@SmallTest
public void testBlah(){
assertEquals(1,1);
}
}
Я прочитал основы тестирования , на деятельность тестирования документа и попытался после этого привет мира теста блог , даже если это для Eclipse. Я не могу заставить средство выполнения тестов найти и запустить мой тест. Что я делаю не так?
Вот некоторые из вопросов, в которых я до сих пор не уверен:
- Нужна ли мне аннотация над методом модульного тестирования?
- Нужно ли мне добавлять к методу префикс «test» или это только для тестов JUnit?
- Могу ли я иметь тесты в пакетах
nilzor.myapp.tests
?
Но главный вопрос этого поста - почему средство запуска тестов не обнаруживает мой тест ?
источник
cmd+shift+t
ярлык, который автоматически создаст тестовый класс в правильном месте пакета, который соответствует классу, который вы в настоящее время редактируете.@Test
маркер поверх теста.Ответы:
Вам необходимо предоставить конструктор по умолчанию для вашего тестового класса, например:
по поводу других ваших вопросов:
Нет. Мои тесты по-прежнему работают без каких-либо аннотаций, но я думаю, что это хорошая практика. Он позволяет указать размер запускаемых тестов. См. Какова цель аннотаций @SmallTest, @MediumTest и @LargeTest в Android? для более подробной информации.
Да, нужна приставка "тестовая". InteliJ выдает предупреждение «метод никогда не использовался», когда нет префикса «тест», и пропускает этот метод во время выполнения теста.
Да. Мои тесты организованы в подпакеты, и, похоже, все работает хорошо.
источник
Если это происходит «внезапно» или «это сработало 5 минут назад», моим решением было перейти в настройки Run / Debug и удалить все конфигурации в разделе «Android Tests». Иногда эти конфигурации повреждаются, если я реорганизую тестируемый класс (например, при переходе на новый пакет).
источник
Create 'Tests in XXX...
- затем он снова работалНичто из вышеперечисленного не помогло мне. Что помогло, так это следование инструкциям :
источник
У меня была аналогичная проблема. Не знаю, почему это происходит, но я смог исправить это, перейдя в «Файл»> «Недействительный кеш / перезапуск» в Android Studio.
источник
Я не знаю, помогает ли это для Android Studio, но у меня был какой-то конфликт Intellij-Gradle. Решил это "щелкнув правой кнопкой мыши" на тестовом файле и выбрав "скомпилировать файл ... Test.java". После этого я снова мог запускать одиночные тесты.
источник
У меня была такая же проблема с Android Studio 2.3.1, но оказалось, что это просто ошибка AS. Выполнение того же теста в версии 2.2.1 работает нормально.
Если вы используете только Android Studio на канале Cannary, я рекомендую вам также установить стабильную версию. http://tools.android.com/tips/using-multiple-android-studio-versions
источник
У меня были тесты, которые работали нормально, пока
gradle
не обновили студию Android.Помимо добавления конструктора по умолчанию в ваши тесты, вам может потребоваться сделать некоторые из этих вещей, чтобы ваш набор тестов работал.
Под
src/
созданиемandroidTest/java/<your-package-name>/test
. Обратите внимание на расширениеandroidTest
. Все остальное, в том числеinstrumentTest
, работать не будет.Добавьте это в
build.gradle
Добавьте это в
AndroidManifest.xml
источник
Для Intellij 15 я решил эту проблему:
a. Щелкните правой кнопкой мыши исходный каталог (обычно src) и выберите «Источник».
б. Щелкните правой кнопкой мыши каталог с тестами и нажмите «Тест»
c. Щелкните правой кнопкой мыши свой выходной каталог и нажмите «Исключено».
a. Установите переключатель «Использовать путь вывода компиляции модуля»
b. Выберите каталог пути вывода для «Путь вывода»
c. Выберите каталог тестового пути для 'Test output Path'
источник
Очевидно, что вам нужно целевое устройство для запуска тестов, поскольку они являются инструментальными тестами. По некоторым причинам студия Android иногда не просит вас указать на это целевое устройство, а просто выводит сообщение «Empty Test Suite». Есть разные способы исправить это, вот несколько:
запустите основное приложение и выберите целевое устройство или
перейдите в конфигурацию Run (Run / Run ... / Edit Configurations) и измените параметры Deployement Target
источник
В моем случае ни один из предыдущих ответов не помог. Решением было просто переместить тестовый класс в другой пакет .
Это произошло под
androidTest/
источник
В моем случае эта проблема была вызвана ошибкой в моем коде, на самом деле это было в классе приложения, поэтому целевая активность не была открыта, и тестовые выходные отпечатки
Я пробовал запускать тесты прямо с терминала с помощью
adb shell am instrument -w -r -e package your.package -e debug false android.support.test.runner.AndroidJUnitRunner
. При этом он печатает для вас гораздо больше об исключениях.источник
У меня была эта проблема, потому что это было в моем build.gradle:
Хотя я не использовал Android Test Orchestrator (должно быть, по ошибке скопировал из руководств).
Комментируя это, я решил эту проблему.
источник
Ни одно из других решений у меня не сработало, но я смог заставить это работать, просто удалив существующее приложение или набор тестов, а затем запустив тесты.
источник
В моем случае в проекте, над которым я работал, было несколько модулей. Ни одно из решений, которые я нашел для этой ошибки, мне не помогло, и затем я каким-то образом понял, что если я добавлю тестовые зависимости в ОБЕИХ файлах build.gradle, тесты волшебным образом заработают. Не имеет значения, живут ли ваши тесты только в одном из модулей, оба файла gradle должны включать зависимости и значение testInstrumentationRunner.
Итак, если, как и я, ни один из других ответов вам не помог, попробуйте добавить эти строки в файл build.gradle каждого из ваших модулей:
а затем также добавьте:
источник
Я просто переименовал файл, и проблема решена.
источник
У меня была такая же проблема, и причина в том, что в моем тестовом классе не было Test в конце имени класса!
источник
Моя проблема была вызвана исключением, возникшим в
@BeforeClass
метода моего тестового примера. Каким-то образом это не приводило к сбою теста - я обнаружил это, только проверив вывод logcat.Я исправил исключение, и внезапно мои тесты запустились!
источник
Столкнувшись с проблемой сегодня - я не смог запустить инструментальные тесты Android с ошибкой Empty Suite - я обнаружил проблему с git, связанную с этой проблемой, и благодаря Стефану Линцнеру я смог запустить тесты.
tl; dr Вам нужно щелкнуть правой кнопкой мыши тестовый пакет, а не класс, чтобы запустить тесты.
Ссылка: https://github.com/googlecodelabs/android-testing/issues/27#issuecomment-219074863
источник
Эта статья мне помогла: Пустой набор тестов
В основном мне пришлось создать пакет - instrumentTest / java - в моем каталоге src и поместить туда все тесты. Тогда я смогу выполнить эти тесты индивидуально.
источник
У меня был необработанный Java-проект, в котором это происходило. Просто Java + JUnit4. Он определенно находится с чем-то в ваших файлах .idea / или .iml. Я списал свой, повторно импортировал, и, наконец, тесты снова запустились.
источник
Тестовый класс может быть исключен из компиляции. Исправьте это в настройке-компилятора-exclude.
источник
Вот мои шаги по отладке, которые я выполняю, когда Android Studio внезапно решает прекратить запуск / отладку тестов (и, черт возьми, это случается очень часто !!):
Я буду добавлять больше исправлений, когда столкнусь с ними!
источник
Я ничего не сделал, и проблема исчезла через полдня мучений, я открывал и закрывал проекты много раз, запускал тесты каждого класса вручную, возможно, это исправило мою проблему.
источник
В студии Android с фреймворком spock я изменил версию Gradle с 2.2.2 на 3.2.1, и все идет хорошо.
источник
Принятый ответ не решил мою проблему. Поэтому я решил скопировать то,
ExampleInstrumentedTest
что по умолчанию создается в Android Studio и работает без проблем, переименовал его во время процесса копирования (без рефакторинга-> Переименовать после копирования!) И вставил в него содержимое моего модульного теста. После этого ошибка исчезла.источник
При попытке запустить локальные модульные тесты в моем проекте Android Studio 3.0 возникла ошибка «Пустой тестовый набор».
Прочитав документацию разработчика Android , я быстро понял, что проблема была вызвана моей конфигурацией gradle, которая включала следующие строки.
Класс AndroidJUnitRunner - это средство запуска тестов JUnit, которое позволяет запускать тестовые классы в стиле JUnit 3 или JUnit 4 на устройствах Android. .
Поскольку мои тесты были локальными и, следовательно, не требовались для запуска на каком-либо устройстве, удаление указанных выше записей com.android.support.test ... позволило мне выполнить модульные тесты.
источник
Я делал некоторые вставки в базу данных в методе @BeforeClass. Я понял, что у меня проблема с отображением объекта / базы данных. Эта проблема с отображением данных была для меня причиной этой проблемы.
источник
В моем случае у меня были свои инструментальные тесты
androidTest/java/<package.name>/MyTestingClass
, но я установил свой текущий вариант сборки на «предварительную подготовку». И в этом суть! Как указано в документации Android Studio :Сообщение
Class not found. Empty test suite.
продолжало появляться, пока я не сделал это:Добавьте эту строку в мой build.gradle :
Затем я снова выполнил тесты, и на этот раз они прошли идеально !!!
источник
Это случилось со мной, когда я по ошибке пометил аннотацией переменную не фиктивного класса.
@Mock
Удалил аннотацию, и тесты прошли успешно. Это произошло с Junit 4.5 на Android Studioисточник
Не решение, а обходной путь, который быстро вернет вас в нужное русло:
Во-первых, найдите тест, который работает. Я писал новый тест, в котором я получил ошибку «пустой набор тестов». Я провел другие тесты, и они работали как обычно.
Скопируйте тестовый файл, который действительно работает. Запустите его, чтобы убедиться, что эта копия работает как оригинал.
Удалите корпус и замените его новым тестовым кодом.
Теперь тест должен работать.
Мы потратили около двух часов, пытаясь найти причину, но безуспешно.
источник