Можно ли выполнить модульное тестирование проекта статической библиотеки с помощью SenCestingKit XCode? - PullRequest
13 голосов
/ 16 декабря 2010

Я создал цель модульного тестирования iOS для выполнения логических тестов, следуя инструкциям, приведенным в документации Apple.

Однако моя сборка завершается неудачно, и я получаю следующую ошибку:

Неопределенные символы:
"_OBJC_CLASS _ $ _ MyClass", на которые ссылается: objc-class-ref-to-MyClassв LogicTests.o ld: symbol (s) не найден collect2: ld вернул 1 состояние выхода

Обычно, если бы я хотел использовать свою статическую библиотеку в приложении, я бы включил файл library.a,и заголовки (включая файл MyClass.h ...).Требуется ли что-то дополнительное для запуска логических тестов в статической библиотеке В этом же проекте, если в моих тестовых примерах используется MyClass.h?

Tjhanks

Ответы [ 4 ]

15 голосов
/ 29 июня 2012

Из-за природы статических библиотек вы не можете выполнять тесты приложений , что, судя по всему, и есть то, что вы пытаетесь сделать.Тем не менее, вы можете выполнять логические тесты.

Вы были правы в своих замечаниях о модульном тестировании в клиентском приложении.

Шаблон Xcode дополнительно включает в себя модульные тесты, но если вы перейдете к настройкам сборки для этого модульного теста, вы увидите егоне указывает тестовый хост или загрузчик пакетов.Это из-за природы статических библиотек.Они не являются приложениями, они являются библиотеками - поэтому вы можете делать логические тесты , вы не можете делать тесты приложений .

Тесты приложений, которые вы можете выполнить на своей статическойБиблиотека может включать в себя следующий сценарий:

Моя библиотека создает базу данных SQLite во время выполнения, я хочу выполнить модульный тест, чтобы проверить, все ли вставляется и / или обновляется, как ожидается.

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

3 голосов
/ 31 мая 2012

У Apple есть пример up (UnitTests), который показывает, как это сделать: https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

2 голосов
/ 20 августа 2011

Да, Xcode 4.2 имеет шаблон для статической библиотеки Cocoa Touch с тестами.

2 голосов
/ 17 декабря 2010

Я на самом деле просто решил это.Мне пришлось скопировать все файлы .m в моем проекте в целевые источники компиляции LogicTest.Помимо добавления фреймворков, источники ссылаются на раздел «Связать двоичные файлы с библиотеками» цели.

Надеюсь, это поможет другим

...