Как вы выполняете модульное тестирование, например, тесты на C? Какая структура или вы проводите другие тесты в качестве модульных тестов на уровне кода?Как проверить код C
ответ
Check хороший тест рамка C.
XCode на Mac есть что-то они назвали CPTest вида встроенными. Я сделал портативную версию, которую я отправил здесь
http://www.loufranco.com/blog/files/AppleCppUnitPort.html
Я целился GCC на Windows, но я думаю, что это будет работать в другом месте, и это очень простые рамки, если вы хотите увидеть, как реализовать такую вещь ,
Информацию о ряде испытательных каркасов C-блока можно найти по адресу www.xprogramming.com, в частности по ссылке software.
Возможно, вы захотите взглянуть на cfix - это единая платформа тестирования, предназначенная для платформ Win32 и режима ядра NT. Поддерживает как C, так и C++.
Если вы используете Windows, в качестве среды DEV, CUnitWin32 может служить ваша цель
Лично мне нравится Google Test framework.
Настоящая трудность при тестировании кода C ломает зависимости от внешних модулей, поэтому вы можете изолировать код в единицах. Это может быть особенно проблематично, когда вы пытаетесь получить тесты по устаревшему коду. В этом случае я часто использую компоновщик для использования функций заглушек в тестах.
Это то, о чем люди говорят, когда говорят «швов». В C ваш единственный вариант - использовать предварительный процессор или компоновщик для извлечения зависимостей.
Типичный набор тестов в одном из моих проектов C может выглядеть следующим образом:
#include "myimplementationfile.c"
#include <gtest/gtest.h>
// Mock out external dependency on mylogger.o
void Logger_log(...){}
TEST(FactorialTest, Zero) {
EXPECT_EQ(1, Factorial(0));
}
Обратите внимание, что вы на самом деле в том числе файл C, а не файл заголовка. Это дает преимущество доступа ко всем статическим элементам данных. Здесь я издеваюсь над своим регистратором (который может быть в logger.o и дает пустую реализацию.Это означает, что тестовый файл компилируется и связывается независимо от остальной части базы кода и выполняется изолированно.
Что касается кросс- компиляция кода, для этого вам нужны хорошие объекты на целевом компьютере. Я сделал это с помощью googletest cross, скомпилированного в Linux на архитектуре PowerPC. Это имеет смысл, потому что у вас есть полная оболочка и os для сбора ваших результатов. (которые я классифицирую как что-либо без полной ОС), вы должны просто создавать и запускать на хосте. Вы должны сделать это в любом случае, чтобы вы могли автоматически запускать тесты как часть сборки.
Я нахожу тестирование кода на C++ как правило, намного проще из-за того, что код OO находится в в общем, гораздо меньше, чем процедурный (конечно, это сильно зависит от стиля кодирования). Также в C++ вы можете использовать трюки, такие как инъекция зависимостей и метод переопределения, чтобы получить швы в код, который иначе инкапсулирован.
Michael Feathers имеет excellent book about testing legacy code. В одной главе он описывает методы работы с кодом, отличным от OO, который я очень рекомендую.
Edit: Я написал blog post о модульном тестировании процессуального кодекса, с source available on GitHub.
- 1. Проверить код состояния C#
- 2. Проверить код программирования C
- 3. spamassassin проверить счет C# код
- 4. Как проверить код JavaScript в C#
- 5. Как проверить код, сгенерированный компилятором C++?
- 6. C# Как проверить этот код? BankAccount Class
- 7. Как проверить код пользователя?
- 8. Как проверить код Java?
- 9. Как легко проверить код?
- 10. Как проверить чек-код
- 11. как проверить html-код
- 12. Как проверить этот код
- 13. Как проверить мой код
- 14. Как проверить байт-код Python?
- 15. Как проверить и проверить код построителя питания
- 16. Как проверить код, который зацикливается
- 17. Программно проверить код .NET
- 18. Как проверить исходный код печати
- 19. PHP: Как проверить код ответа?
- 20. Как проверить видео-код google?
- 21. Как проверить исходный код AS
- 22. Как эффективно проверить этот код?
- 23. Как быстро проверить код javascript?
- 24. Как проверить код для SqueakSource?
- 25. Как проверить большой сложный код?
- 26. Как проверить код операции инструкции?
- 27. xsd: как проверить числовой код
- 28. Как проверить мобильный код удаленно?
- 29. Как проверить устаревший код jQuery
- 30. Как проверить код пробуждения iPhone?
http://stackoverflow.com/questions/65820/unit-testing-c-code – mmcdole 2009-02-12 21:56:59