После прочтения нескольких тем здесь, в StackOverflow,
Я пришел к выводу, что я должен принять в какой-то форме
тест-ориентированная разработка / юнит-тест (или хотя бы исследование местности).
И так как мы говорим о c-коде под Linux,
Я решил попробовать чек
(Я не знаю, является ли это правильным выбором, но если это не хорошо, я всегда могу попробовать что-то еще позже).
Но так как эта концепция модульного и модульного тестирования является абсолютно новой для меня,
Я начал делать какой-то модульный тест на очень маленьком тестовом коде (но я все равно был полностью потерян и мне казалось, что я что-то упустил)
Это то, что я сделал до сих пор, я создал следующий файл:
- main.c, main, который вызывает только функцию 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 за косвенное указание на то, что онлайновая документация - это только половина правды,
Пример кода, поясняющий то, о чем говорится в документации, уже был установлен с пакетом check.
В случае с Ubuntu / usr / share / doc / check / example / tests /
Обновление: пример кода был создан так, что вы начали с просмотра его первой версии,
затем второй и т.д.
И так как мой код был сломан, и я хотел, чтобы модульный тест доказал это,
Я немного обманул и проверил против реальной функции Pow.
Примерно так:
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);
}
Однако в будущем я не буду воспроизводить то, что уже есть в stdlibs: -)
Связанный:
взято из поиска [c] [unit-testing]
.