Класс не найден: пустой тестовый набор при выполнении модульных тестов в Android Studio
У меня есть набор тестов для моего приложения для Android, и все модульные тесты работают нормально. Однако, когда я делаю одно изменение в одном из моих классов unit test (например, ModelUnitTests
), при попытке снова запустить этот класс, я получаю это сообщение
Process finished with exit code 1
Class not found: "xxx.xxxxxx.xxx.ModelUnitTests"Empty test suite.
Если я выполняю очистку gradle, а затем снова запускаю тесты класса, он работает нормально (но это занимает 4 минуты, чтобы сделать...), но затем новое изменение снова сломает его.
Любые советы по устранению этого? Я не совсем уверен, какую конфигурацию теста я должен опубликовать. Я использую артефакт Unit Tests, и мои тесты находятся на
module/src/test/package
папка
Ответы
Ответ 1
У меня была похожая проблема, и это было потому, что я сначала создал unit тест с тем же именем класса. Когда я создал инструментальный тестовый модуль, я получил ошибку.
Чтобы решить эту проблему, я пошел в Edit Configurations, слева от значка запуска. Затем, ниже Unit Test, это был "конфликтующий" класс, который я удалил. Нажмите Применить/ОК. Затем я щелкаю правой кнопкой мыши на имени класса, нажимаю на run и вуаля, все работает.
Ответ 2
У меня была та же проблема. Я заметил, что тестируемый метод отображался в раскрывающемся меню "Run/Debug" как:
TestClassName.testMethod()
а не правильное:
testMethod()
Я исправил его, удалив конфигурацию TestClass.testMethod()
Run/Debug для тестового метода, который выдавал эту ошибку, а затем повторно запускал тест.
Если это воссоздает ту же проблему, удалите неправильную конфигурацию Run/Debug, затем щелкните правой кнопкой мыши на методе тестирования и выберите:
Create 'testMethod()'...
(вместо Run или Debug), чтобы создать рабочую конфигурацию.
Ответ 3
Исправление в Android Studio:
- Шаг 1.- Перейти к Run/Debug конфигурации
- Шаг 2.- Перейти в раздел Android Tests
- Шаг 3.- Удалите тестовый файл конфигурации с (-)
- Шаг 4.- Нажмите Применить и ОК
- Шаг 5. - Запустите тест снова
Ответ 4
Просто наткнулся на это - пишу мои юнит-тесты в Котлине. В моем случае оказалось, что я забыл добавить плагин kotlin в данный файл build.gradle
модулей:
apply plugin: 'kotlin-android'
Ответ 5
У меня была эта проблема, и ни один из ответов на этот пост (или другие заметные сообщения о переполнении стека) не решил ее для меня.
Тем не менее, ручной запуск gradle-задачи compileTestKotlin, похоже, решил проблему для меня.
Это было для тестов Kotlin, Android Studio 3.1.2
Ответ 6
Если вы используете Robolectric, вам может потребоваться установить Рабочий каталог в конфигурации запуска как $MODULE_DIR $![ввести изображение здесь]()
Также задайте параметры VM
: -ea
или: -noverify
http://robolectric.org/getting-started/
Ответ 7
Если вы работаете в команде, проверьте все ваши файлы build.gradle
, чтобы убедиться, что никто не отключает тестовые задачи. У меня была ошибка "пустой тестовый набор", и в итоге я обнаружил, что это вызвано следующим в build.gradle
в корне проекта:
gradle.taskGraph.whenReady {
tasks.each { task ->
if (task.name.contains("Test"))
{
task.enabled = false
}
}
}
Ответ 8
Если вы используете Robolectric, проверьте его в каталоге $MODULE$/test
вместо $MODULE$/androidTest
Это случилось со мной, и потратил около часа, чтобы понять это
Ответ 9
эту проблему опишите здесь Google CodeLab ссылку
![in center of a page]()
Ответ 10
У меня была эта проблема сегодня с одним из моих тестовых классов, и ни одно из решений здесь, казалось, не помогло. Однако, просто запустив другой тестовый класс, это исправили - после этого оригинальный проблемный класс работал правильно.
Ответ 11
Случилось со мной в AS 3.3.
Я использую флейворы, и это произошло в модуле, который имеет только src/main
и src/test
. Модуль приложения имеет src/main
src/common
и src/flavor
. Тип сборки, выбранный в AS, был flavorDebug
.
Чтобы исправить это, я выбрал "Запустить конфигурации" и в выпадающем меню "Использовать путь к классу модуля" был выбран модуль приложения. Выберите модуль, который вы хотели бы проверить и вуаля!
Ответ 12
В моем случае это было вызвано тем, что в методе @BeforeClass возникло исключение.
Ответ 13
Решил его с помощью более низкой версии gradle
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
Это нужно сделать сейчас
Ответ 14
У меня была такая же проблема. Я создал класс Suite и решил проблему