Я создаю кроссплатформенный проект C ++, в котором есть модульные тесты, написанные с googletest
framework, и есть проблемы, с которыми я сталкиваюсь при попытке запустить модульные тесты на симуляторе iPhone в Azure DevOps.
Проблема в xcrun simctl launch
выполняет приложение на симуляторе iPhone, но также, кажется, ожидает завершения приложения симулятора, чтобы вернуться в консоль, поэтому я попытался запустить его в фоновом режиме с помощью &
и подождите 30 секунд (этого должно быть достаточно для завершения модульных тестов) и убейте его, но похоже &
просто не влияет на Azure, а конвейер просто останавливается навсегда и никогда не достигает sleep 30
инструкция. Я просмотрел документацию по Azure, но, похоже, не нашел ни одной подсказки.
В то же время был протестирован следующий скрипт и доказано, что он работает локально. Он загружает симулятор, устанавливает и запускает приложение, затем через 30 секунд завершает работу симулятора и загружает выходные результаты.
jobs:
- job: BuildJob
pool:
vmImage: 'macOS-10.13'
- template: ios-single-build.yml
parameters:
sdk: '11'
arch: 'x86_64'
config: ${{ parameters.config }}
sysroot: 'iphonesimulator'
- bash: |
# npm install ios-sim -g
UUID=`xcrun simctl list | grep 'iPhone X' | cut -d'(' -f2 | cut -d')' -f1 | grep -v apple | head -n 1`
xcrun simctl boot $UUID
xcrun simctl install booted $(Build.BinariesDirectory)/unit-tests/google_test.app
xcrun simctl launch booted test.google.app >/dev/null 2>&1 &
sleep 30
kill %1
OUT=`find ~/Library/Developer/CoreSimulator/Devices/$UUID/data/Containers/Data/Application/ -name test_results.txt`
cat $OUT
displayName: 'Run unit tests'
Так есть ли какие-то ограничения, чтобы не запускать процессы в фоновом режиме в Azure? Есть ли другие способы запустить симулятор iPhone? Кстати, я тоже пробовал ios-sim
утилита, но также ожидает завершения работы симулятора.