Начиная с Xcode 11 результирующий выходной файл из автоматического тестирования (модульные тесты или UITests) стал .xcresult (см. Скриншот ниже).
До Xcode 11 в тестовой папке, которая использовалась для создания файла JUnit, был создан файл TestSummaries.plist.
Файл JUnit затем использовался в Jenkins CI для:
- Показать результаты теста
- Отправлять электронные письма, уведомляющие членов команды о сбоях.
- Хранить архив результатов и их параметров
Но теперь кажется, что нет доступного инструмента командной строки для анализа файла .xcresult, который содержит:
- Результаты теста
- Покрытие кода
- Снимки экрана (они не очень интересны)
Я пробовал xcpretty: https://github.com/xcpretty/xcpretty, но тот просто говорит, что было выполнено 0 тестов, когда на самом деле выполнено около 68
Не уверен, имеет ли это значение, но я используйте .xctestplan и ниже команду xcodebuild
xcodebuild -scheme Debug -workspace MyApp.xcworkspace -destination 'platform=iOS Simulator,OS=12.4,name=iPhone Xs Max' test -testPlan UnitTests
Я также увидел, что был установлен инструмент командной строки с Xcode 11, который решает часть головоломки:
$ xcrun xcresulttool --path ResultBundle.xcresult --format json > ResultBundle.json
Но это разбирает только один слой
Я также посмотрел на xcparse , и они, кажется, на правильном пути, например, он решил разобрать файл .xcresult и получить покрытие кода и скриншоты, но они почему-то не включали самые важные часть .xcresult (для нашей компании), которая является результатами тестов. Как 47 удалось 4 не удалось, и они потерпели неудачу, эта часть.
В заключение: Как я могу преобразовать .xcresult в файл JUnit?
Бонус : Я увидел, что Apple включила подробное описание формата .xcresult, позвонив:
xcrun xcresulttool formatDescription
Apple сделала это так, чтобы будущие изменения в формате .xcresult могли автоматически обрабатываться сторонними библиотеками, так что решение, которое создаст файл JUnit, подойдет, решение, которое создает файл JUnit и каким-то образом работает с «xcrun xcresulttool formatDescription», даже лучше, так как оно является будущим:)