Как последовательно запускать тесты в Xcode 6 beta3

Из того, что я вижу, похоже, что Xcode последовательно запускает тесты из заданного TestCase, но из разных тестовых баз параллельно.

Можно ли настроить проект/цель так, чтобы все тесты выполнялись последовательно? Например, это было бы полезно для запуска различных тестов интеграции, которые имеют побочные эффекты, влияющие на другие тесты. (например, доступ к тем же таблицам базы данных)

EDIT: чтобы устранить некоторую путаницу: я не говорю о принуждении к определенной последовательности тестов, просто чтобы убедиться, что тесты не мешают друг другу.

Спасибо

Ответ 1

Если вам нужно, чтобы ваши объекты имели согласованное начальное состояние для тестов, я бы рекомендовал добавлять вызовы к методу setUp ваших тестовых классов. setUp вызывается перед каждым из тестов в тестовом классе.

Если вам нужен ваш пакет для работы в определенном порядке, это звучит так, будто у вас нет модульных тестов и выполняются интеграционные тесты. Вы можете попытаться использовать setUp для инициализации объектов более низкого уровня. Если вас интересует только поведение класса более высокого уровня, попробуйте mocks. Рамка OCMock доступна для Objective-C.

Ответ 2

Не уверен, что это решит вашу проблему, но можете ли вы провести тесты в очередь на очереди? Это позволяет вам запускать их одновременно, но ждать, пока будут устранены барьеры.

func dispatch_barrier_async(_ queue: dispatch_queue_t,
                      _ block: dispatch_block_t)

https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/#//apple_ref/c/func/dispatch_barrier_async

Кроме того, вы можете настроить несколько контекстов и затем объединить их.