Разница между запуском тестов из AndroidStudio и gradle task

#android-studio #android-gradle-plugin #mockito #powermock

#android-studio #android-gradle-plugin #mockito #powermock

Вопрос:

У меня есть локальные тесты, которые используют mockito и PowerMockito в моем проекте. Их около 300. Когда я запускаю их из Android Studio (Выполнить -> Выполнить конфигурацию тестирования), все они прошли. Но наша система CI запускает его с помощью gradle task testDebugUnitTest, который завершает около 90 из них с различными ошибками.

Вопрос в том, в чем разница между этими механизмами?

Комментарии:

1. Это действительно широко, поскольку зависит от того, что делают тесты, чего они ожидают от среды, как они терпят неудачу и т.д. Это могут быть некоторые файлы с относительными путями, это могут быть переменные среды, различия между ОС, это может быть разница в JDK, вы называете это… Предоставленной информации действительно недостаточно, чтобы прийти к разумному выводу. Вам придется самостоятельно исследовать и выяснить, какие различия (возможно, ошибки в инструментах) существуют. Если вы можете предоставить точную информацию, которую мы можем использовать для воспроизведения вашего сценария, тогда мы сможем провести расследование. В противном случае у нас нет возможности угадать.

2. Ну, на самом деле вопрос таков: что происходит, когда я нажимаю на зеленую кнопку с надписью «Выполнить» в Android Studio? Gradle запущен? Или что? Я не хочу исправлять эти 90 тестов, это другая история.

3. Если вы запускаете из Gradle, вы гарантированно получаете результат. По моему опыту, запуск из Android Studio не приводит к повторной сборке тестов и либо использует кэшированные из ./gradlew test , либо сообщает, что набор тестов не найден. Это может быть исправлено в более поздних версиях, хотя

4. Вы выяснили, что было не так?

Ответ №1:

Используете ли вы Android Gradle(https://developer.android.com/studio/releases/gradle-plugin.html ) плагин?

Необходимо знать, что система сборки Android Studio основана на Gradle, а плагин Android для Gradle добавляет несколько функций, специфичных для создания приложений для Android. Хотя плагин для Android обычно обновляется на этапе синхронизации с Android Studio, плагин (и остальная часть системы Gradle) может запускаться независимо от Android Studio и обновляться отдельно.

Официальные документы здесь:https://developer.android.com/studio/releases/gradle-plugin.html

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

Надеюсь, это поможет!

Комментарии:

1. Проверьте, какая задача gradle запускается Android Studio при выполнении ‘Run’. Вы можете увидеть эту информацию в окне «Журнал событий» [нижний правый угол].

2. @RanjanKumar да, это теплее. Но я не вижу, кто запускает тесты. Все, что я вижу, это задания для подготовки двоичных файлов к тестированию.