2010-03-25 6 views
2

Je suis à la recherche d'approches pour le code de systèmes embarqués Unit Test écrit en C.Code de systèmes embarqués avec de bons tests unitaires?

Dans le même temps, je suis également à la recherche d'un bon framework UT que je peux utiliser. Le cadre devrait avoir un nombre relativement faible de dépendances.

Tous les bons produits Open-source qui ont de bons UT?

EDIT:

Mesdames et messieurs, merci pour les réponses -I vraiment les apprécier, mais cela ne directement répondre à ma question:

Connaissez-vous un code open-source qui utilise des tests unitaires C? Je cherche à voir comment il est fait, pour que je puisse apprendre quelque chose à partir du code ...

Répondre

1

Édition: il existe une liste de projets utilisant Check comme unité de test unitaire sur le check project page. Certains liens sont obsolètes, mais vous pouvez parcourir la source du test unitaire de pigment et SCEW; il faut télécharger la source pour les autres.


minunit n'a aucune dépendance à tous et peut être utilisé comme base pour construire votre propre cadre.

En ce qui concerne une approche, je pars des fonctions du niveau le plus bas (les feuilles). Très souvent, lorsque je teste la fonction de niveau supérieur, ils invoquent les fonctions de niveau inférieur. Ce n'est pas un problème car les fonctions inférieures ont déjà été testées.

Je modularise également le code en tant qu '«objet», ou tableau d'objets. Les fonctions stub permettent de tester le matériel ou d'autres composants. Je me débarrasse du statique avec une définition qui le supprime, ou j'inclue le fichier source contenant les fonctions à tester dans le fichier source des tests unitaires.

#if defined(UNIT_TESTING) 
#define STATIC 
#else 
#define STATIC static 
#endif 

Pas sorcier ici, mais cela ne l'affaire. Une dernière chose, tester le comportement, pas l'implémentation pour que les tests unitaires ne cassent pas lorsque l'implémentation change.

2

modularisation votre code de telle sorte qu'il ya une fine couche dans le fond qui connaît la les détails du matériel sous-jacent. Cette couche peut ensuite être raillée sur un PC normal. De cette façon, vous pouvez utiliser des bibliothèques de tests unitaires normales pour le développement des postes de travail afin de tester tout le code, à l'exception de cette couche inférieure. Mon expérience sur le développement de logiciels embarqués pour Linux utilise C++ et pas tout à fait C. Nous avons utilisé cppunit pour les tests unitaires.