studio - programacion android pdf 2018
¿Existe un tutorial más básico para la comprobación de la estructura de prueba de la unidad C? (3)
Estoy intentando seguir el tutorial oficial aquí, pero requiere un conocimiento práctico de autotools, que no tengo. Esperaba solo escribir un par de pruebas rápidas, y encuentro este tutorial abrumador. Se basa en mucha magia en autoconf, automake y algunas macros de Check, supongo, y no explica cómo funciona realmente el Check para que pueda realizar pruebas a mano.
¿Alguien puede recomendar un tutorial más simple que no requiera autotools?
Ciertamente, no es necesario aprender autotools para usar Check in small projects. Digamos que nuestro main () está en main.c y nuestra implementación.c tiene una función que suma 2 ints. (implementación.h contiene solo la función prototipo)
#include "implementation.h"
int sum(int a, int b) {
return a + b;
}
Puedes escribir una prueba así:
#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");
Guarde el archivo en implementation-test.check (puede elegir cualquier nombre / extensión que desee, pero quédese con ellos si quiere seguir mi guía) y luego ejecute el script awk incluido que viene con Check. ¡Ni siquiera tiene que molestarse con el código para el marco de verificación! (para mas detalles man checkmk)
checkmk implementation-test.check >implementation-test.c
La salida será la siguiente:
/*
* 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;
}
Luego, simplemente incluya -lcheck cuando compile para vincular la biblioteca de verificación y ejecute el programa.
gcc -Wall -o sum2ints-test implementation.c implementation-test.c -lcheck
./sum2ints
A continuación se muestra un simple makefile para comenzar. Guárdelo en sum2ints.makefile y luego, para compilar la implementación.c junto con main, ejecute:
make -f sum2ints.makefile
Para compilar y ejecutar la implementación.c con nuestra implementación-prueba.c que se creó a partir de checkmk, ejecute:
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
He preparado un archivo .zip para usted que contiene todo lo anterior.
Revisé múltiples tutoriales. This salió de la caja:
archivo.c
#include <stdio.h>
#include <assert.h>
#define run_test(fn_name) /
printf("%s/n", #fn_name); /
fn_name()
// Stupid sample tests
void test_foo()
{
assert(1 < 2);
}
void test_bar()
{
assert(NULL == (void*)0);
}
int main(int argc, char *argv[])
{
run_test(test_foo);
run_test(test_bar);
printf("/nOK/n");
return 0;
}
construir y correr
user@host ~/ $ make file
user@host ~/ $ ./file
test_foo
test_bar
OK