Является ли Google Test OK для тестирования кода C? - программирование
Подтвердить что ты не робот

Является ли Google Test OK для тестирования кода C?

Итак, мне понравилось и нравится использовать Google Test для проекта С++, в котором я участвую. Я просто воспитываю новый проект, который будет прямой C (библиотека) и пока не может видеть по какой-либо причине, чтобы не продолжать использовать Google Test, даже несмотря на то, что он имеет структуру С++. Наличие компилятора С++ не будет проблемой.

Существуют ли конкретные причины, по которым я не должен использовать Google Test для тестирования прямого кода C?

Спасибо.

4b9b3361

Ответ 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, которую я создаю.