Подтвердить что ты не робот

В чем преимущества XCTest над SenTestingKit?

Я хочу выполнить модульное тестирование в iOS. По умолчанию тестовые классы создаются с использованием классов инфраструктуры XCTest в Xcode 5. Я использовал SenTestingKit в более ранних версиях iOS. Каковы различия между этими двумя структурами? В чем преимущества рамок XCTest. Я поступил в поисковую документацию, но не нашел. Единственное, что я нашел, это классы интерфейса, которые можно использовать внутри набора. Может ли кто-нибудь указать мне на связанные ресурсы.

4b9b3361

Ответ 1

Документация Apple, в частности, отсутствует в отношении тестирования. Это позор, потому что пять минут с XCTest заставили меня упасть. Итак, вот некоторые документы, которые могут оказаться полезными.

Сначала остановитесь и посмотрите видео WWDC о тестировании: https://developer.apple.com/wwdc/videos/?include=409#409 (должен быть зарегистрированным разработчиком)

Затем прочитайте о ботах. Это настоящая магия в XCTest. В настоящее время я настраиваю среду Mac-сервера Mavericks, подключенного к небольшому массиву iPod Touch, iPhones и iPads, который будет одновременно запускать мои модульные тесты и отчитываться. Это чертовски близко к магии.

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html#//apple_ref/doc/uid/TP40013292

Все, что сказал, я не очень хорошо знаю SenTest, чтобы сравнить их. Но я изучаю XCTest, так что вот несколько мыслей о том, что я действительно копаю в этом до сих пор.

  • Это уже есть. Там ничего не загружать, и вы можете создавать объекты тестового класса одновременно с тем, что вы хотите проверить. Радиолярии
  • Поскольку он настолько глубоко интегрирован с Xcode, вы можете увидеть покрытие теста в желобе. Вы также можете использовать Companion View для просмотра тестеров из источника или источника из методов тестера. Кроме того, он всегда будет актуальным - не ждать фиксации интеграции с Xcode, потому что Apple "сломала" что-то.
  • Непрерывная интеграция. Боты просто волшебны, и они так легки. Вы также получаете хостинг Git, который является небольшим преимуществом, но тем более, если вы предпочитаете, чтобы ваш Git был внутренне размещен, но не хотел платить за GitHub Enterprise.

И, несколько минус для измерения:

  • Отсутствие документации. Просить меня прочитать заголовки для списка утверждений - это шаткий шаг. Я не сомневаюсь, что Apple скоро это исправит, но не скоро.
  • Вы привязаны к Xcode немного глубже. На самом деле не для разработки, но сценарий XCTest не так изящен, как другие варианты.
  • Для непрерывной интеграции требуется сервер OS X. Он может быть на том же компьютере, если вы действительно этого хотите, но он стоит 20 долларов, даже если вы владеете Mountain Lion Server. Я вовсе не горький об этом (га).

Мои два цента. Надеюсь, поможет. Я бы порекомендовал смотреть видео, с которым я связался, - они создают живое тестовое создание и делают действительно убедительным аргументом в пользу модульного тестирования в целом, независимо от того, используете ли вы XCTest.

Ответ 2

XCTest включены по умолчанию с ios7 и лучше интегрируются с новой функцией непрерывной интеграции.
https://developer.apple.com/technologies/tools/

Ответ 3

Похоже, что в настоящее время преимуществ мало, но, как мы надеемся, с течением времени изменится, поэтому запустим вики сообщества, чтобы документировать некоторые:

  • Семейство макросов XCTAssert… может обрабатывать вас, оставив параметр format (используемый для комментирования, почему тест должен пройти) полностью. Это удобно для проведения простых тестов (где это очевидно из самого теста, что он делает), чистых в редакторе. STAssert… требовал от нас сделать параметр format nil или некоторые такие.
  • Существует общий макрос XCTAssert(), который кажется более аккуратным, чем привязка некоторых типов проверок в STAssertTrue.