Я отвечаю за автоматизацию iOS в своей компании, и я работаю с Swift в XCTest. Моя компания находится в процессе конвертации в Swift 3, и в промежутке времени я преобразовал свои тесты в Swift 2.3 до тех пор, пока мы не завершили конверсию. Автоматизация замедлилась до неприемлемой скорости. Настолько плохо, что если бы мы были в начале снова и выбрали рамки XCTest, были бы дисквалифицированы. Мои тестовые времена выросли почти на треть в этом переходном быстром преобразовании. Пытаясь раскрыть то, что проблема была эта ссылка было полезно: Swift 3 Compile Time Incredibly SlowXCTest in Swift 2.3 болезненно медленный
Мы применили final
для всех моделей класса, чтобы иметь дело с ленивым Варсом набравших нам 6 секунд на тест! К сожалению, не вернуть его обратно к своей первоначальной скорости :(
, как у нас в мобильном мире автоматизации знают, используя NSPredicate в соответствии с рекомендациями @Joe Masilotti это лучший способ ждать элементов https://stackoverflow.com/users/384110/joe-masilotti
Я прокомментировал тест, в котором использовался пользовательский func waitForElement()
, который включал в себя let existsPredicate = NSPredicate(format: "exists == true")
. Тот же тест получил дополнительные 3 секунды! Так что в общей сложности 9 секунд существенны, но, к сожалению, это все еще не возвращается к исходной скорости. Надеюсь, что это выражает мои слова о том, как медленный swift 2.3 стал.
Я собираюсь преобразовать только тестовые цели для быстрого 3 и посмотреть, поможет ли это. Моя теория о том, что Xcode 8 оптимизирована для swift 3 не swift 2.3
Мой вопрос в том, есть ли другой способ написать NSpredicate/waitForElement или hittable метод в расширении, которое не замедлит мои тесты?
Вы уверены, что это не потому, что вы работаете с iOS 10 симуляторами, так как вы обновились до Xcode 8? По моему опыту, симуляторы iOS 10 работают намного медленнее, чем iOS 9. – Oletha
интересно, я попробую, и да, я запускаю 10 симов. – JJacquet
Святое дерьмо, которое взяло тест, который с 120 секунд в OS 10 sim до 55 секунд в OS 9 sim. Спасибо за совет. Не могу поверить, что Apple выпустила Swift 3 вот так. Если код, который идет медленнее, является целью их, тогда они достигли важной вехи. Поздравляю Apple, сообщите мне, нужен ли вам QA. – JJacquet