Как организовать модульное тестирование проекта библиотеки в Xcode? - PullRequest
5 голосов
/ 24 августа 2009

Я еще не фанат интегрированных сред разработки, но я пытаюсь преодолеть свои предрассудки и изучить Xcode. (Eclipse / CDT следующий; я не мог заставить это работать для меня, когда я пытался в прошлом году, но это отдельная проблема.)

Я пишу новый код в новом проекте, который станет (частью) небольшой библиотекой. Я тоже хочу провести юнит-тестирование. Как мне объяснить Xcode, что я создаю (разделяемую) библиотеку, но я также хочу использовать ее в тестовой программе, скомпилированной из отдельного источника, которого нет в разделяемой библиотеке?

Исходный код:

  • atom.c
  • atom.h
  • тест-atom.c

Произведенные файлы:

  • libatom.dylib
  • тест-атом

У меня есть atom.c и atom.h, скомпилированные в библиотеку. Я просто не уверен, как организовать вещи так, чтобы я мог также собрать test-atom для связи с библиотекой. Я предполагаю, что, когда у меня все получится, добавление библиотеки для кода поддержки тестирования, test-atom.c, будет относительно простым, даже если это еще не контролируется Xcode.

FWIW, я в основном работаю в C, а не в Objective C.

Ответы [ 2 ]

4 голосов
/ 24 августа 2009

Вам нужно две цели в вашем проекте; цель в Xcode производит product , который представляет собой библиотеку, исполняемый файл или какой-либо другой вывод.

Таким образом, у вас будет цель для создания libatom.dylib, которую, я подозреваю, вы уже настроили, и другая исполняемая цель командной строки для создания test-atom исполняемого файла, который вы сможете запустить для тестирования своей библиотеки.

После того как вы добавили цель test-atom, вы должны получить информацию о test-atom.c и удалить ее членство из цели libatom.dylib и добавить ее в качестве члена вашей новой test-atom цель. Целевое членство файла - это то, что определяет, попытается ли сборка цели скомпилировать / скопировать / связать этот файл. (То, что цель делает с файлом, зависит от того, к какой фазе сборки он добавляется, когда становится участником.)

Вы также должны получить информацию о записи libatom.dylib в своей группе продуктов и сделать , что также членом цели test-atom. Это приведет к тому, что исполняемый файл test-atom будет ссылаться на libatom.dylib.

Наконец, получите информацию о цели test-atom (не о продукте) и на вкладке Общие добавьте зависимость в цель libatom.dylib. Это гарантирует, что при построении цели test-atom всегда сначала будет строиться цель libatom.dylib.

2 голосов
/ 24 августа 2009

Редактировать: См. Автоматическое модульное тестирование с Xcode 3 и Objective-C (более поздняя версия статьи, на которую я первоначально ссылался, как указано в комментарии ниже). См. Также Каков наилучший способ модульного тестирования кода Objective-C? Хотя вы явно еще не используете Obj-C, основы установки новых целей будут одинаковыми для кода C, и Специфичные для OCUnit материалы очень хорошо показывают, как работает модульное тестирование в IDE.

...