Можно ли 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

4 ответа

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

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


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

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

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

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

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

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


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


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

licensed under cc by-sa 3.0 with attribution.