У меня есть локальные тесты, которые используют mockito и powerMockito в моем проекте. Их около 300. Когда я запускаю их из Android Studio (Выполнить -> Выполнить тестовую конфигурацию), все они прошли. Но наша CI-система запускает его с помощью градуированной задачи testDebugUnitTest, которая дает сбой около 90 из них с разными ошибками.
Вопрос: в чем разница между этими механизмами?
Ну, собственно вопрос: что происходит, когда я нажимаю зеленую кнопку с надписью «Выполнить» в студии Android? Грейдл запущен? Или что? Я не хочу исправлять эти 90 тестов, это отдельная история.
Если вы запускаете Gradle, вам гарантировано, что он работает. По моему опыту, запуск из Android Studio не приводит к повторной сборке тестов и либо используются кешированные из ./gradlew test, либо сообщается, что набор тестов не найден. Это может быть исправлено в более поздних версиях, хотя
Вы поняли, что было не так?





Вы используете плагин 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
Таким образом, если есть различия, связанные с версией и платформой, мы должны ожидать, что результаты будут другими.
Надеюсь это поможет!
Проверьте, какая задача gradle запускается студией Android, когда вы выполняете «Выполнить». Вы можете увидеть эту информацию в окне «Журнал событий» [нижний правый угол].
@RanjanKumar да, теплее. Но я не вижу, кто проводит тесты. Все, что я вижу, это задания по подготовке бинарников к тестированию.
Это действительно широко, поскольку зависит от того, что делают тесты, чего они ожидают от среды, как они терпят неудачу и т. д. Это могут быть некоторые файлы с относительными путями, это могут быть переменные среды, различия между ОС, это может быть разница в JDK, вы называете это ... На самом деле предоставленной информации недостаточно, чтобы прийти к разумному выводу. Вам придется провести собственное расследование и выяснить, какие существуют различия (возможно, ошибки в инструментах). Если вы можете предоставить точную информацию, которую мы можем использовать для воспроизведения вашего сценария, мы сможем провести расследование. В противном случае у нас нет возможности угадать.