Ответ 1
Вам, конечно, не нужно изучать autotools, чтобы использовать Check in small projects. Скажем, наш main() находится в main.c, а наша реализация .c имеет функцию, суммирующую 2 ints. (реализация .h содержит только прототип функции)
#include "implementation.h"
int sum(int a, int b) {
return a + b;
}
Вы можете написать тест следующим образом:
#include "implementation.h"
#test sum2test
fail_unless(sum(3, 2) == 5, "sum function borked");
fail_unless(sum(-3, 2) == -1, "sum function borked");
fail_unless(sum(3, -2) == 1, "sum function borked");
fail_unless(sum(-3, -2) == -5, "sum function borked");
Сохраните файл в файле implementation-test.check(вы можете выбрать любое имя/расширение, которое хотите, но оставайтесь с ними, если хотите следовать моему руководству), а затем запустите включенный awk script, который поставляется с Check. Вам даже не нужно беспокоиться с шаблоном кода для рамки проверки! (для более подробной информации man checkmk)
checkmk implementation-test.check >implementation-test.c
Выход будет следующим:
/*
* DO NOT EDIT THIS FILE. Generated by checkmk.
* Edit the original source file "implementation-test.check" instead.
*/
#include <check.h>
#line 1 "implementation-test.check"
#include "implementation.h"
START_TEST(sum2test)
{
#line 4
fail_unless(sum(3, 2) == 5, "sum function borked");
fail_unless(sum(-3, 2) == -1, "sum function borked");
fail_unless(sum(3, -2) == 1, "sum function borked");
fail_unless(sum(-3, -2) == -5, "sum function borked");
}
END_TEST
int main(void)
{
Suite *s1 = suite_create("Core");
TCase *tc1_1 = tcase_create("Core");
SRunner *sr = srunner_create(s1);
int nf;
suite_add_tcase(s1, tc1_1);
tcase_add_test(tc1_1, sum2test);
srunner_run_all(sr, CK_ENV);
nf = srunner_ntests_failed(sr);
srunner_free(sr);
return nf == 0 ? 0 : 1;
}
Затем просто включите -lcheck, когда вы скомпилируете, чтобы получить связанную библиотеку проверки и запустить программу!
gcc -Wall -o sum2ints-test implementation.c implementation-test.c -lcheck
./sum2ints
Ниже приведен простой make файл, чтобы вы начали. Сохраните его в файле sum2ints.makefile и затем создайте реализацию .c вместе с main, run:
make -f sum2ints.makefile
Чтобы создать и запустить реализацию .c с нашей версией-test.c, созданной из checkmk, запустите:
make -f sum2ints.makefile test
-
CFLAGS=-Wall
LIBS=-lcheck
all: sum2ints
sum2ints: main.o implementation.o
gcc -o sum2ints main.o implementation.o
main.o: main.c implementation.h
gcc $(CFLAGS) -c main.c
implementation.o: implementation.c implementation.h
gcc $(CFLAGS) -c implementation.c
test: sum2ints-test
./sum2ints-test
sum2ints-test: implementation-test.o implementation.o
gcc -o sum2ints-test implementation.o implementation-test.o $(LIBS)
implementation-test.o: implementation-test.c implementation.h
gcc $(CFLAGS) -c implementation-test.c
Я подготовил ZIP файл для вас, содержащий все вышеперечисленное.