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

Класс не найден: пустой тестовый набор при выполнении модульных тестов в 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 папка

4b9b3361

Ответ 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

Это случилось со мной, и потратил около часа, чтобы понять это

Ответ 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 и решил проблему