Gostaria de compartilhar aqui uma ferramenta que vem sendo utilizada nos Dojos da FAC SBO, extremamente útil e fácil de utilizar.
Para realizar o Dojo o ideal é ter alguma ferramenta que auxilie nos testes (TDD) de maneira que não fosse necessário muitos desvios no código.
Após várias buscas na Internet, descobri ferramentas interessantes, algumas poderosas, porém para quem está começando em TDD, esse “monte” de opção poderia atrapalhar mais do que ajudar, até que finalmente encontrei uma biblioteca simplista que cumpre com o necessário, e é de fácil entendimento, mesmo por pessoas que estão começando a programar em C.
MinUnit – a minimal unit testing framework for C [link]
Esse senhor é composto de 2 arquivos simples, o primeiro é a biblioteca, que tem apenas 4 linhas e é responsavel pela mágica, veja:
/* file: minunit.h */
#define mu_assert(message, test) do { if (!(test)) return message; } while (0)
#define mu_run_test(test) do { char *message = test(); tests_run++; \
if (message) return message; } while (0)
extern int tests_run;
Esse arquivo você coloca no diretório da sua aplicação e da um #include nele, pronto, agora é só utilizar o esqueleto abaixo (o segundo arquivo) e então passar a ter os testes para a sua aplicação.
/* file minunit_example.c */
#include <stdio.h>
#include "minunit.h"
int tests_run = 0;
int foo = 7;
int bar = 4;
static char * test_foo() {
mu_assert("error, foo != 7", foo == 7);
return 0;
}
static char * test_bar() {
mu_assert("error, bar != 5", bar == 5);
return 0;
}
static char * all_tests() {
mu_run_test(test_foo);
mu_run_test(test_bar);
return 0;
}
int main(int argc, char **argv) {
char *result = all_tests();
if (result != 0) {
printf("%s\n", result);
}
else {
printf("ALL TESTS PASSED\n");
}
printf("Tests run: %d\n", tests_run);
return result != 0;
}
Tudo o que você deverá ter em seu arquivo é:
- Criar seu teste com a assinatura padrão – static char * test_bar()
- Adicionar na função all_tests através do comando mu_run_test(nome_da_sua_funcao) as funções criadas por ti.
- Em sua função de teste, você fará afirmações (asserts) utilizando a função *mu_assert(“mensagem”, teste_lógico);
- Run!
*Vale lembrar que a idéia é, se seu teste_lógico falhar, então a mensagem será exibida!
Idéia: Olhe o código da MinUnit, veja e reveja, entenda, é um código SIMPLES entre aspas!























O que é Coding Dojo?