Можно ли unit test создать проект статической библиотеки с помощью XCode SenTestingKit?
Я создал iOS unit test для выполнения логических тестов, следуя инструкциям, приведенным в документации Apple.
Однако моя сборка завершается с ошибкой, и я получаю следующую ошибку:
Undefined символы:
"_OBJC_CLASS _ $_ MyClass", ссылка: objc-class-ref---MyClass в LogicTests.o ld: символ не найдено collect2: ld возвращено 1 выход статус
Обычно, если бы я хотел использовать статическую библиотеку в приложении, я бы включил файл library.a и заголовки (включая файл MyClass.h...). Требуется ли что-то дополнительное для запуска логических тестов в статической библиотеке WITHIN в том же проекте, если в моих тестовых случаях используется MyClass.h?
Tjhanks
Ответы
Ответ 1
Я просто решил. Мне пришлось скопировать все файлы .m в мой проект в Target LogicTest "Compile Sources". Помимо добавления фреймворков источники ссылаются на раздел "Ссылка на двоичные файлы с библиотеками" цели.
Я надеюсь, что это поможет другим
Ответ 2
Из-за природы статических библиотек вы не можете выполнять прикладные тесты, которые по звуку это то, что вы пытаетесь сделать. Однако вы можете выполнять логические тесты.
Вы были верны в своем наблюдении об модульном тестировании в клиентском приложении.
Шаблон Xcode необязательно включает в себя модульные тесты, но если вы перейдете к настройкам сборки для этого unit test, вы увидите, что он не указывает тестовый хост или загрузчик пакетов. Это связано с природой статических библиотек. Они не являются приложениями, они являются библиотеками - поэтому вы можете выполнять логические тесты, , вы не можете выполнять тесты приложений.
Тестирование приложений, которое вы, возможно, захотите выполнить в своей статической библиотеке, может включать в себя следующий сценарий:
Моя библиотека создает базу данных SQLite во время выполнения, я хочу выполните unit test, чтобы проверить, что все вставляет и/или обновляет как ожидалось.
Чтобы проверить это с помощью модульных тестов, необходимо создать другое приложение, которое включает или иным образом зависит от вашей библиотеки. Затем это приложение включает в себя ваши библиотеки и тесты приложений.
Ответ 3
У Apple есть образец (UnitTests), который показывает, как это сделать:
https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742
Ответ 4
Да, Xcode 4.2 имеет шаблон для Cocoa Touch Static Library с тестами.