Комментарии 10
Появление протоколов Executor/SerialExecutor было одним из этапов развития идеи назначения кастомных исполнителей акторам в будущем, что в некотором виде уже реализовано в Swift 5.9
Не увидел в примерах использование XCTestExpectation, который вроде как раз предназначен для тестирования асинхронного кода. Не пробовали?
Спасибо за коммент, да вы правы, что идея данного протокола - изменить или расширить функционал асинхронного программирования, в частности тестирования такого кода. Пока Swift 5.9 все же находится на стадии бета версии, поэтому мы постарались показать, как это можно использовать в будущих версиях языка в рамках текущей. Насчет XCTestExpectation, мы используем его в одном из наших тестов, и честно говоря, он не отличается большой производительностью и высоким прохождением. Да, вариант неплохой, но все равно не гарантирует успешное прохождение тестов в большинстве случаев.
Невольно закрадывается мысль, что было бы достаточно просто отключить параллельное выполнение тестов.
А не проще ли было просто использовать Set вместо массива и сравнивать Set?
Можно написать собственный сервис, где переопределить глобальный хук, и сделать это через синглтон, например, ибо вряд ли у вас будет еще подобный сервис в приложении. И уже оттуда дергать методы для тестов. А насчет "такого количество работы", здесь примеры были для наглядности, чтобы показать как будут вести себя тесты при количестве их исполнения больше 1)) А ничто так не показывает реальную статистику, как большие цифры). Кстати, у Apple есть подобный механизм под капотом, но он работает через раз https://github.com/apple/swift/issues/63104
P. S. Не говорю, что синглтон - панацея, ибо ухудшает тестирование в теории, можно обойтись и без него. Мы хотели донести идею написания собственного сервиса.
Возможно так было бы проще :)
@MainActor
func testAsyncBasic() async {...}Ну, или так, например
Task { @MainActor in
...
}В целом если указать @MainActor внутри таски, а не помечать целиком весь метод как @MainActor, то работает плюс минус неплохо, однако тем не менее производительность у хука выше.
Информация
- Сайт
- www.ibs.ru
- Дата регистрации
- Дата основания
- 1992
- Численность
- 1 001–5 000 человек
- Местоположение
- Россия
- Представитель
- Алексей Фёдоров
Подводные камни тестирования кода в Swift Concurrency