Является ли Google Test OK для тестирования кода C?
Итак, мне понравилось и нравится использовать Google Test для проекта С++, в котором я участвую. Я просто воспитываю новый проект, который будет прямой C (библиотека) и пока не может видеть по какой-либо причине, чтобы не продолжать использовать Google Test, даже несмотря на то, что он имеет структуру С++. Наличие компилятора С++ не будет проблемой.
Существуют ли конкретные причины, по которым я не должен использовать Google Test для тестирования прямого кода C?
Спасибо.
Ответы
Ответ 1
Очень часто тестируется C-код с использованием фреймворков тестирования С++, даже ведущая книга по теме следует этому подходу. Я использовал googletest в прошлом в коде unit test C и могу рекомендовать его.
Я написал сообщение в блоге об этом, которое может быть полезно:
http://meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/
Ответ 2
Как и весь код Google С++, Google Test не использует исключения, поэтому поток безопасности исключений не будет проблемой. Пока ваши заголовки совместимы с С++ (не используя ключевые слова С++, экспортируйте символы с правильной привязкой), это должно быть хорошо.
Ответ 3
Я не мог назвать его. Я предполагаю, что будут некоторые вещи, которые у вас нет в "нормальном" C. Например, я думаю, что TestCase получен из определенного класса. Но в рамках теста вы можете проверить все, что захотите, и почему бы не C?
Ответ 4
Джейсон,
Имейте это в виду!: D
Как сказал Meekrosoft, да, это возможно. Я также использовал его сайт, когда я пытался это сделать. Он работает, но есть одна большая проблема:
GTest - это объектно-ориентированный инструмент, а язык C - нет!
В примере, в GTest у вас есть много функций (80% всего API), которые запрашивают объект в качестве параметра, например:
EXPECT_CALL(turtle, PenDown()) // turtle is object(class) and PenDown() is method of that object
.Times(AtLeast(1));
с сайта GTest https://code.google.com/p/googlemock/wiki/ForDummies
поэтому вы будете использовать только макросы, такие как expect_equal, expect_bigger_than и т.д....
Я хотел бы предложить вам инструмент CMocka (или некоторые другие инструменты тестирования модуля C). Это также из google (изменено группой разработчиков, отличных от Google), и создается непосредственно для языка C. Я использую это, когда хочу протестировать исходный код C-типа.
Надеюсь, это поможет..:-) Приятного дня..: -)
Ответ 5
Я просто подумал, что добавлю еще один момент: поскольку gtest - это С++, вы будете анализировать свои заголовки C под тестом как С++. Это означает, что тесты не гарантируют, что заголовки расходуются на C. Я недавно столкнулся с этим с библиотекой C, которую я создаю.