Ну, этот вопрос довольно хорошо, и я просто интересно, почему этот вопрос игнорируется.
Как отмечается в документе, говоря:
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
Спасибо, как я нашел классы и методы в моем вопросе! – Boon