После прочтения некоторых потоков в StackOverflow, Я пришел к выводу, что я должен принять в какой-то форме тестовое развитие / unit test (или, по крайней мере, изучить область).
И поскольку мы говорим о c-коде под Linux, Я решил дать check попробовать (Я не знаю, правильно ли это, но если это нехорошо, я всегда могу попробовать что-то другое позже).
Но поскольку это понятие структур unit test и unit test совершенно для меня совершенно, Я начал делать некоторые unit test на очень маленьком тестовом коде (но я все равно был полностью потерян, и мне казалось, что я чего-то не хватает).
Это то, что я сделал до сих пор, я создал следующий файл:
- main.c, основной, который вызывает только функцию my_pow и печатает результат.
- my_pow.c, содержит функцию my_pow.
- my_pow.h
- my_pow_test.c, я подумал, что я должен разместить здесь код единицы для функции my_pow.
(Таким образом, "обычная программа" - это main.c, my_pow.c и my_pow.h.)
Это my_pow.c
#include "my_pow.h"
int my_pow(int a, int b)
{
return (a*b);
}
Тогда я понял, что в my_pow_test.c я помещаю что-то вроде этого:
#include <check.h>
#include "my_pow.h"
START_TEST (test_my_pow)
{
/* unit test code */
}
END_TEST
//do I need some sort off main here that calls test_my_pow?
Это в основном то же самое, что и в руководство по проверке, глава 3.1, но все же не....
Может ли кто-нибудь нажать меня в правильном направлении?
Спасибо Johan
Обновление: нет причин, по которым я пытался использовать проверку, я просто подумал, что должен начать где-то, возможно, CUnit - лучший выбор (я думаю, что я тоже попытаюсь это сделать, а затем сделаю образованный выбор).
Обновление: Спасибо @philippe за косвенное указание, что онлайновая документация - это только половина правды, код примера, который разъясняет, что говорит о документации, уже установлен с пакетом проверки. В случае Ubuntu/usr/share/doc/check/example/tests/
Обновление: пример кода был создан так, что вы начали с рассмотрения его первой версии, затем второй и т.д. и т.д. Чтобы вы могли следить за тем, как он создает очень простой тестовый пример/код от ничего до чего-то полезного в традиционном TTD-способе.
И так как мой код был сломан, и я хотел, чтобы unit test доказал это, Я немного обманул и протестировал против реальной функции. Что-то вроде этого:
START_TEST (test_my_pow1)
{
int resultat = my_pow(3,3);
int math = pow(3,3);
fail_unless ( resultat == math,
"Error on 3^3 != %d (%d)",math, resultat);
}
Однако в будущем я не буду воспроизводить то, что уже находится в stdlib: -)
по теме:
- Модуль тестирования кода C
- Как проверить код C
- Модули тестирования устройств для C
- Тестирование Framework для C
- Основные unit test и C, как мне начать?
взято из поиска [c] [unit-testing]
.