2014-01-22 2 views
5

В моем ежедневном модульном тестовом кодировании с Xcode я использую только XCTestCase. Существуют и другие классы, которые, похоже, не используются, например: XCTestSuite, XCTest, XCTestRun.Тестирование модулей iOS: методы XCTestSuite, XCTest, XCTestRun, XCTestCase

Что такое XCTestSuite, XCTest, XCTestRun для? Когда вы их используете?

Кроме того, заголовок XCTestCase имеет несколько методов, таких как:

defaultTestSuite 
invokeTest 
testCaseWithInvocation: 
testCaseWithSelector: 

Как и когда использовать выше?

У меня возникли проблемы с поиском документации по вышеуказанным классам и методам XCTest.

ответ

-1

Запустите свой Xcode и используйте cmd + shift + O, чтобы открыть диалоговое окно быстрого доступа, просто введите «XCTest», и вы найдете некоторые связанные файлы, такие как XCTest.h, XCTestCase.h ... Вам нужно зайти в этот файл чтобы проверить интерфейсы, которые они предлагают.

Существует хороший сайт о XCTest: http://iosunittesting.com/xctest-assertions/

+0

Спасибо, как я нашел классы и методы в моем вопросе! – Boon

2

Ну, этот вопрос довольно хорошо, и я просто интересно, почему этот вопрос игнорируется.

Как отмечается в документе, говоря:

XCTestCase представляет собой конкретный подкласс XCTest, который должен быть точкой переопределения для большинства разработчиков, создающих тесты для своих проектов. Подкласс подпрограммы может содержать несколько методов тестирования и поддерживает настройку и разрывы, которые выполняются для каждого метода тестирования , а также для настройки уровня класса и его срыва.

С другой стороны, это то, что XCTestSuite определено:

Конкретный подкласс XCTest, XCTestSuite является коллекция тестов. В качестве альтернативы, набор тестов может извлекать тесты, которые будут запускаться автоматически.

Ну, с XCTestSuite, вы можете построить свой собственный набор тестов для определенного подмножества тестов, вместо пакета по умолчанию ([XCTestCase defaultTestSuite]), который, как все тестовые случаи.

Фактически, XCTestSuite по умолчанию состоит из каждого тестового примера, найденного в среде выполнения, - всех методов без параметров, не возвращающих значения и с префиксом «тест» во всех подклассах XCTestCase.

О нас XCTestRun класс?

Пробный тест собирает информацию о выполнении теста. Ошибки в явном утверждениях теста классифицируются как «ожидаемые», в то время как отказы от несвязанных или неперехваченных исключений классифицируются как «непредвиденные».

С XCTestRun, вы можете записывать информацию любит startDate, totalDuration, failureCount и т.д., когда тест начинается, или нечто подобное hasSucceeded когда сделано, и поэтому вы получили результат выполнения теста. XCTestRun дает вам возможность контролировать то, что происходит или что происходит с тестом.

Назад к XCTestCase, вы заметите, что есть методы с именем testCaseWithInvocation: и testCaseWithSelector:, если вы читаете исходный код. И я рекомендую вам сделать для более копания.

Как они работают вместе?

Я нашел, что есть замечательное объяснение в Quick's QuickSpec source file.

XCTest автоматически компилирует список подклассов XCTestCase, включенных в тестовую цель . Он выполняет итерацию по каждому классу в этом списке и создает новый экземпляр этого класса для каждого метода тестирования. Затем он создает вызов « » для выполнения этого метода тестирования. Вызов представляет собой экземпляр NSInvocation, который представляет одно сообщение, отправляемое в Objective-C. Вызов задается на экземпляре XCTestCase и выполняется тест.

Некоторые ссылки:

http://modocache.io/probing-sentestingkit https://github.com/Quick/Quick/blob/master/Sources/Quick/QuickSpec.swift https://developer.apple.com/reference/xctest/xctest?language=objc

Смежные вопросы