Salut,
Un test unitaire est un test qui vérifie la valeur de retour d'une fonction avec les paramètres d'entrée qu'on lui fournit. Ce qui élimine d'office les functions mettant en oeuvre le hardware. Comme la valeur d'entrée n'est pas connue à ce moment là, on ne peut pas prévoir la sortie. Le header à utiliser est assert.h assert pour "assertion", bien sûr. La macro à utiliser est assert(). Quand le resultat est faux, le programme s'arrête avec un message d'erreur explicite. On peut par exemple tester une fonction qui met en majuscule:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <assert.h>
char upper(char inputchar)
{
char tempchar = inputchar;
if(inputchar >= 'a' && inputchar <= 'z')
{
tempchar = inputchar - 32;
}
return tempchar;
}
int main(int argc, char** argv)
{
assert(upper('a') == 'A');
assert(upper('A') == 'A');
assert(upper('b') == 'C');
return 0;
} |
Assertion failed: upper('b') == 'C', file D:\faller\languages\C\codeblocks\dummy\main.c, line 18
Il est clair que le test ci dessus ne teste pas grand chose. C'est un exemple. Les test unitaires sont de la responsabilité du programmeur. Ils ne font pas forcément partie du programme embarqué, mais peuvent être objet d'un programme séparé embarquant la bibliothèque de fonctions. On peut aussi les embarquer dans le programe en mode debug en les entourant du #ifdef qui va bien _RELEASE_, _DEBUG_ ou quelque chose du genre, je te laisse chercher.
A+
Pfeuh
Partager