/ / Додавання випробувань Swift Unit на змішану мову Xcode Project - об'єктивне, c кодування, швидке, одиничне тестування

Додавання тестів Swift Unit на змішану мову Xcode Project - об'єктивне, c кодування, швидке, одиничне тестування

Як ви можете налаштувати одиничні тести для тестування класів Swift, доданих до попереднього проекту Objective-c?

Я додаю Swift класів до мого проекту, і я можу працювати з ними в інших файлах Swift та Objective-c, однак, я не можу отримати доступ до них з моїх тестових класів.

Звіт про імпорт, я вважаю правильним, є @testable import MyAppModuleName що додано в приклад класу тесту в шаблонах Xcode. Помилка, що виникає в цьому рядку, є Cannot import module being compiled. Ця помилка в Xcode 7 використовується Swift 2.

Відповіді:

5 за відповідь № 1

У мене були подібні проблеми, що працювали на робочому місці з сумішшю бази Code Base Objective-C та Swift, і хотіли написати тести для моїх Swift файлів. Нижче наведені кроки, які я вирішив для вирішення проблеми.

  • Я встановив параметр "Увімкнути перевірку" на "YES" в налаштуваннях проекту
  • Я також встановив "Визначає модуль" у "YES" в налаштуваннях мого проекту.
  • Скажіть, для звичайного файлу .swift у моєму проекті MyApp, Я був збираюся писати тестові випадки для мене, я маю обидва головний "MyApp"і" "MyAppUnitTests"Цілі перевірені під цільовим членством.

Я тоді вибрав мій тестовий файл (и), оголосив "@testable імпортувати MyApp"зверху, під"імпортувати XCTest", і тільки перевірив "MyAppUnitTests"під цільовим членством. Очищені, побудовані і Біг, і все працювало як чарівність. Сподіваюся, це допоможе.


3 для відповіді № 2

Відповідь надається від https://twitter.com/UINT_MIN

У моєму випадку обидва цілі (додаток та тести) мали однакове ім'я модуля в налаштуваннях збірки. Зміна назви модуля тестової цілі вирішила проблему.


1 для відповіді № 3

@testable import це для того, коли ви намагаєтеся імпортувати код з основного модуля з вашої тестової цілі. Ваш тестовий код не повинен бути членом вашої цільової програми - вам слід мати окрему тестову ціль. Див. Використання одиничних випробувань для подробиць.