2015-09-23 2 views
4

Как настроить модульные тесты для тестирования классов Swift, добавленных в ранее реализованный проект Objective-c?Добавление быстрых модульных тестов в проект Xcode смешанного языка

Я добавил классы Swift в свой проект и могу работать с ними в других файлах Swift и Objective-c; однако я не могу получить к ним доступ из своих тестовых классов.

Операция импорта, верю, верна: @testable import MyAppModuleName - это то, что добавлено к примеру тестового класса в шаблонах Xcode. Ошибка, создаваемая этой линией, равна Cannot import module being compiled. Эта ошибка находится в Xcode 7 с использованием Swift 2.

ответ

3

Ответ предоставляется https://twitter.com/UINT_MIN

В моем случае оба цели (приложение и тесты) имели такое же имя модуля в настройках сборки. Изменение имени модуля тестовой задачи разрешило проблему.

1

@testable import для тех случаев, когда вы пытаетесь импортировать код из своего основного модуля из тестовой цели. Ваш тестовый код не должен быть членом вашей целевой задачи - вы должны иметь отдельный целевой тест. См. Using Unit Tests.

+0

Спасибо! Я думаю, что этот сценарий вызовет ту же проблему, хотя я ее не тестировал. В моем случае проблема была в конфликтующих именах модулей. –

5

У меня были схожие проблемы, работающие над рабочим пространством с сочетанием базы Objective-C и Swift и хотели написать блок-тесты для моих файлов Swift. Ниже приведены шаги, которые я предпринял для решения проблемы.

  • Я установил «Включить тестируемость» на «YES» в Строительства Настройки проекта
  • Я также установить «Определяет модуль» на «YES» в Строительства настройки моего проекта.
  • Для файла регулярного .swift (ов) в рамках моего проекта, скажем, MyApp, я собирался писать тесты для меня есть как главный «MyApp» и "MyAppUnitTests «Цели, проверенные в целевом членстве.

Затем я выбрал мой блок тестовый файл (ы), объявил «@testable импорта MyApp» в верхней части, под «импорт XCTest» и только проверил "MyAppUnitTests «Под целевым членством. Очищено, построено и работает, и все работает как шарм. Надеюсь это поможет.

+0

* Обратите внимание, что «MyApp», используемый в качестве примера имени проекта, эквивалентен моему «имени модуля продукта» в разделе «Настройки сборки». Просто для уточнения. –

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