2009-09-23 4 views
8

Я рубиновый программист, и мне очень нравится делать TDD. Прямо сейчас, я немного программирую на C, но мне нравятся мои инструменты и способ программирования с ruby. Итак, я ищу фреймворк для модульных тестов на C. Что вы можете мне рассказать?Модули тестирования модулей для C: Сравнение

Я уже нашел некоторые варианты, такие как: cunit, cmockery, CuTest и другие. Проблема в том, что я не знаю, как оценить лучший. Я пишу простой компилятор для моего колледжа.

Не могли бы вы мне помочь?

+0

Я хотел бы иметь что-то простое, как CUTest (http://cutest.sourceforge.net/), но я также хотел бы иметь что-то с отличным результатом, как Cutter (http://cutter.sourceforge.net /). Но мне кажется, что у меня не может быть обоих. –

+0

Я бы тоже хотел ответить на этот вопрос. –

ответ

3

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

Мое мнение таково, что вы хотите иметь как можно меньше результатов от своих тестов. т.е. если все в порядке, оно должно напечатать '100% passed'. В противном случае он должен только распечатывать сведения об ошибках тестирования.

см. xprogramming.com, прокрутите вниз до таблицы тестирования устройства и найдите C Language или C++ каркасы. Наиболее «стандартным», по-видимому, является cppUnit.

+0

Во многих средах, в которых используется C, вы можете * использовать * только C. Поэтому фреймворки C++, вероятно, здесь не полезны, тем более, что OP говорит о компиляторе в колледже, который, вероятно, не позволит ему использовать C++ в своем проект. –

+0

Его правда, что, например, встроенный компилятор C, который работает под окнами, но нацеленный на микроконтроллер, только компилирует C, но было бы достаточно легко скомпилировать ваш код, скажем, в Visual Studio. Затем вы можете записывать тесты на C++ с любой платформой модульного тестирования C++, которую вы хотите. – quamrana

3

Я использовал gtest и нашел его довольно простым в использовании (это C++, хотя). На самом деле, это не имеет большого значения, какой вы выбираете. Просто выберите один и изучите его.

+0

Во многих средах, которые используют C, вы можете * использовать * только C. Поэтому фреймворки C++, вероятно, здесь не очень полезны, тем более, что OP говорит о компиляторе в колледже, который, вероятно, не позволит ему использовать C++ в своем проект. –

+1

gtest - единственная платформа тестирования, которая мне понравилась в c/C++. –

+0

AFAIK gtest также может использоваться с C, поскольку он использует только макросы, поэтому не должно быть никакой зависимости C++. – helpermethod

1

Существует страница wiki, в которой содержится информация о 20 C compatible unit testing frameworks. Хотя может быть недостаточно информации для принятия решения, это достойная отправная точка.

1

Unity, тестовый фреймворк для C имеет богатый набор утверждений, включая побитовые и блокировки блоков памяти. Если вы не имеете дело с большой старой кодовой базой, я бы рекомендовал использовать Ceedling, родительский проект Unity. Ceedling строит ваши тесты Unity, производственный код и объединяет красивую насмешливую структуру под названием CMock. CMock может автоматически генерировать mock/substitute для модуля из своего публичного заголовка интерфейса.

Есть видео, показывающее вам, как get started with Ceedling and Unity. (ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я создал видео).

Альтернатива, это CppUTest. Он компилируется в 1 статическую библиотеку (2, если вы хотите использовать фальшивую фреймворк, CppUMock). Тесты написаны на C++ и интегрируются с вашим существующим проектом makefile. Он также предлагает альтернативы обнаружения утечки памяти для malloc/free, new/delete. Для сравнения, его утверждения не столь всеобъемлющи, как Unity, но, вероятно, лучше подходят для тестирования устаревших проектов C/C++.

Смежные вопросы