Реализация простых модульных тестов с помощью Objective-C

Недавно я полюбил модульное тестирование после того, как познакомился с этой идеей в Programming Ruby. Я знал, что в Xcode есть предпочтение «Включить модульные тесты», поэтому я попробовал его. Во-первых, было очень сложно найти документацию по фреймворку, а во-вторых, было сложно добавить модульные тесты в инструмент командной строки Foundation. Со всеми его отдельными схемами и целями и т.д.

Это заставило меня задуматься о написании чрезвычайно минимальной и простой в использовании среды модульного тестирования, в основном для образовательных целей.

Моя идея заключается в том, чтобы вы написали метод и методы запуска и очистки, начинающиеся с test. Затем я бы написал 5-6 функций утверждения. (Как и в большинстве фреймворков). Затем в main() вы должны сказать что-то вроде:

[MyAppTests test];

Или что-то подобное. Затем будут запущены все методы тестирования и зарегистрированы ошибки или успехи. Тогда я мог бы опираться на это в будущем.

Мои вопросы: как реализовать, что вы можете запускать все методы, начиная с теста, в Objective-C, используя Foundation и, возможно, стандартную библиотеку C? И какой будет оптимальный/минимальный дизайн для такой штуки?


person kmikael    schedule 02.12.2011    source источник


Ответы (1)


Используйте Справочник по среде выполнения Objective-C, чтобы узнать, как получить списки имен методов. Затем вы можете отфильтровать методы настройки и очистки или включить только методы, которые начинаются, например, с «тест». Я почти уверен, что встроенная структура SenTest делает это внутри.

http://developer.apple.com/library/mac/#documentation/cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

Когда я регулярно использую подобные функции C, я часто предпочитаю заключать их в служебный класс или, если это уместно, в категорию.

person Peter DeWeese    schedule 02.12.2011
comment
Я не знаю, полностью ли версия SenTest с открытым исходным кодом идентична дистрибутиву Apple, но она должна быть достаточно близкой, поэтому, если кто-то хочет посмотреть, как это делается, код находится здесь: sente.ch/software/ocunit/#Download - person Monolo; 03.12.2011