Краткий ответ на вопрос о повторном запуске нестабильных тестов пользовательского интерфейса: нет , XCTest и xcodebuild не поддерживают эту опцию.Так что это не возможно изначально.
Более длинный ответ - да , это возможно, просто нелегко реализовать.
Вам потребуется:
- среда CI, которая будет запускать команду
xcodebuild
с полным набором тестов - скрипт Python для получения неудачных тестов из результатов ваших тестов (или другого такого языка)
- административный доступ к вашему бегунку CI (или как минимум R / W доступ)
Как это сделать?
Ваши тесты будут запущены (а некоторые потерпят неудачу в процессе) в первый xcodebuild test...
.Вы дадите им закончить и проанализируете (с помощью написанного вами сценария) те тесты, которые не прошли.Вы можете получить эту информацию, например, из файла StandardOutputAndError.txt
( как вы его нашли? ), поэтому вам потребуется полный доступ к вашему бегунку CI.
После сбоя анализа скриптатесты из файла результатов, вы можете создать новую команду xcodebuild
с помощью этого скрипта, которая будет запускать только те тесты, которые были проанализированы, потому что они не прошли.Новый xcodebuild
будет использовать only-testing:
флаги (да, вы можете иметь несколько в одном xcodebuild
), чтобы указать тест, он должен быть запущен ( как использовать эти флаги? ).
После этого ваша новая созданная команда xcodebuild
будет возвращена в среду CI и выполнена там.Я имел дело с чем-то похожим (создание xcodebuild
в скрипте Python для запуска тестов только в соответствии с изменениями в проекте iOS и выполнение его в CI), и мой вопрос должен помочь вам в среде исполнения и CI.
Подводя итог: нет , нативной поддержки этому нет, но да это можно сделать, если вы достаточно смелы :-)
Надеюсь, это помогло.
E: о, и нет - вы не можете (и не должны) использовать measureBlock
для этого.Они предназначены для тестирования производительности и не имеют такой функциональности, как повторный запуск неудачных тестов.