Понимайте и сокращайте время выполнения тестов с помощью пакета ConcurrencyExtras в Swift.IOS

Программируем под IOS
Ответить
Anonymous
 Понимайте и сокращайте время выполнения тестов с помощью пакета ConcurrencyExtras в Swift.

Сообщение Anonymous »

В моем приложении для модульного тестирования наша команда сильно полагается на инструмент для выполнения асинхронного теста — ConcurrencyExtras — withMainSerialExecutor
Этот инструмент добавляет возможность запуска тестового кода в основном потоке, а также мы могли бы добавить блок await Task.yield(), чтобы дождаться завершения какой-либо длительной операции
Он работает хорошо, но кажется, что время выполнения тестов увеличилось, и я хочу его сократить исполнение время.
Пока что здесь предлагается только единственное решение, которое я нашел: добавить
override func invokeTest() {
withMainSerialExecutor {
super.invokeTest()
}
}

В начале каждого теста и везде удаляйте с помощью MainSerialExecutor.
Это работает, и теперь мои асинхронные тесты выполняются быстрее.
Мой вопрос: почему это сократило время выполнения асинхронных тестов? По сути, я заставил каждый тест выполняться в основном потоке, но добавленный вручную блок withMainSerialExecutor сделал то же самое. Может быть, у кого-то есть другое решение, позволяющее сократить время выполнения асинхронного теста?
Пример теста, который перешел из «длинной» зоны (более 0,1 секунды) в короткую
func testHasLoaded() async {
/// Arrange
sut = makeVM()
var hasLoaded = String()
sut.dataHasFinishedLoading = {
hasLoaded = "hasLoaded"
}

/// Assert
await Task.megaYield()

XCTAssertEqual(hasLoaded, "hasLoaded")
}

Оригинал (0,11 секунды):
func testThatViewModelDataHasFinishedLoadingProject() async {
withMainSerialExecutor {
/// Arrange
sut = makeVM()
var hasLoaded = String()
sut.dataHasFinishedLoading = {
hasLoaded = "hasLoaded"
}

/// Assert
await Task.megaYield()

XCTAssertEqual(hasLoaded, "hasLoaded")
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... ge-in-swif
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»