#android #testing #fastlane #android-instrumentation
#Android #тестирование #fastlane #android-инструментарий
Вопрос:
Проблема, с которой я сталкиваюсь, заключается в том, что я не смог запустить тесты espresso с помощью FastLane, я хочу запустить тесты в эмуляторе с помощью плагина Fastlane
Я использовал плагин automated_test_emulator_run для Fastlane, я следую инструкциям в этой статье https://medium.com/pink-room-club/android-continuous-integration-using-fastlane-and-circleci-2-0-part-i-7204e2e7b8b
на данный момент я просто хочу запускать тесты локально, поэтому, когда я запускаю следующее
bundle exec Fastlane instrumentation_tests
сбой с ошибкой: нет такого файла или каталога — /tools/bin/avdmanager
вот моя полоса в Fastlane
default_platform(:android)
platform :android do
desc "Runs all the tests"
lane :test do
gradle(task: "test")
end
#for increment the version code
android_get_version_code(
gradle_file: "app/build.gradle" # optional
)
android_set_version_code(
gradle_file: "app/build.gradle" # optional
)
desc "Run instrumentation tests"
lane :instrumentation_tests do
automated_test_emulator_run(
AVD_setup_path: "fastlane/AVD_setup.json",
AVD_recreate_new: false,
AVD_clean_after: false,
gradle_task: "connectedDebugAndroidTest")
end
end
И это мой AVD_setup.json
{
"avd_list": [
{
"avd_name": "Pixel_2_API_Test",
"create_avd_package": "system-images;android-28;google_apis_playstore;x86",
"create_avd_device": "Pixel 2",
"create_avd_tag": "google_apis_playstore",
"create_avd_abi": "x86",
"create_avd_additional_options": "",
"create_avd_hardware_config_filepath": "",
"launch_avd_port": "",
"launch_avd_snapshot_filepath": "",
"launch_avd_launch_binary_name": "emulator",
"launch_avd_additional_options": "-skin 1080x1920 -gpu on"
}
]
}
вот часть выходных данных и ошибка, которую я получил
[13:34:31]: Driving the lane 'android instrumentation_tests' 🚀
[13:34:31]: -----------------------------------------
[13:34:31]: --- Step: automated_test_emulator_run ---
[13:34:31]: -----------------------------------------
[13:34:31]: The automated_test_emulator_run plugin is working!
[13:34:31]: Preparing commands for Android ADB
[13:34:31]: Preparing parameters and commands for emulator:
Pixel_2_API_Test
[13:34:31]: Configuring environment in order to launch emulators:
[13:34:31]: Getting avaliable AVDs
[13:34:31]: $ /tools/bin/avdmanager list avd
-------------------------- -------------------------------
| Lane Context |
-------------------------- -------------------------------
| DEFAULT_PLATFORM | android |
| ANDROID_VERSION_CODE | 38 |
| ANDROID_NEW_VERSION_CODE | 39 |
| PLATFORM_NAME | android |
| LANE_NAME | android instrumentation_tests |
-------------------------- -------------------------------
[13:34:31]: No such file or directory - /tools/bin/avdmanager
------ ----------------------------- -------------
| fastlane summary |
------ ----------------------------- -------------
| Step | Action | Time (in s) |
------ ----------------------------- -------------
| 1 | default_platform | 0 |
| 2 | android_get_version_code | 0 |
| 3 | android_set_version_code | 0 |
| 4 | prompt | 4 |
| 💥 | automated_test_emulator_run | 0 |
------ ----------------------------- -------------
[13:34:31]: fastlane finished with errors
[13:34:31]: Error accessing file, this might be due to fastlane's
directory handling
[13:34:31]: Check out
https://docs.fastlane.tools/advanced/#directory-behavior for more
details
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open3.rb:199:in `spawn’: No such file or directory — /tools/bin/avdmanager (Errno::ENOENT)
from/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open3.rb:199:in `popen_run’
from/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open3.rb:190:в
popen2e'
sh_control_output’ из>/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/forwardable.rb:202:в
from /Library/Ruby/Gems/2.3.0/gems/fastlane->2.120.0/fastlane/lib/fastlane/helper/sh_helper.rb:54:insh'
run’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/runner.rb:256:в
from /Library/Ruby/Gems/2.3.0/gems/fastlane-plugin-automated_test_emulator_run-1.6.0/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb:48:inblock (2 levels) in execute_action'
execute_action’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/runner.rb:235:в
from /Library/Ruby/Gems/2.3.0/gems/fastlane-
2.120.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:inblock in execute_action'
chdir’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/ fastlane/runner.rb:227:в
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/runner.rb:227:inexecute_action'
trigger_action_by_name’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/fast_file.rb:154:в
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/runner.rb:157:inmethod_missing'
блоке (2 уровня) в parsing_binding’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/lane.rb:33: в
from Fastfile:26:incall'
блоке при выполнении’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/runner.rb:45:в
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/runner.rb:49:inchdir'
execute’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/lane_manager.rb:56:в
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/runner.rb:45:incruise_lane'
handle’ из /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/commands_generator.rb:108: в `блоке (2 уровня) при запуске»
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.120.0/fastlane/lib/fastlane/command_line_handler.rb:36:in
Я не знаю, что мне делать? что я пропустил? в ошибке упоминается, что это может быть связано с обработкой каталогов fastlane, поэтому я перешел по ссылке, но не понял, что делать ?! Я использую обновленный fastlane и плагины, пожалуйста, помогите мне и заранее спасибо
Ответ №1:
Игнорируйте стандартное сообщение об ошибке fastlane, касающееся обработки каталогов.
Это зависит от используемого вами плагина (https://github.com/AzimoLabs/fastlane-plugin-automated-test-emulator-run из моего поиска в Google — вы на самом деле не предоставили больше информации об этом), команда / программа, которую он пытается использовать ( /tools/bin/avdmanager list avd
) и ваша локальная установка Android.
Вы должны выяснить, действительно ли у вашего локального Android есть avdmanager
команда и где она находится, и list avd
работает ли она с ней. Затем выясните, почему плагин не использует его из правильного местоположения.
Догадка: возможно, плагин использует переменную ENV ANDROID_HOME
или аналогичную, которая пуста в вашей системе.
Комментарии:
1. Ха, потрясающе! Вы можете создать проблему для плагина, чтобы он выводил сообщение об ошибке, если переменная ENV отсутствует или пуста.