9
votes

Cadres de test unitaire pour C: comparaison

Je suis un programmeur rubis et j'aime beaucoup faire TDD. En ce moment, je programmment un peu en C, mais j'aime mes outils et la façon dont je programme avec Ruby. Donc, je cherche un cadre pour faire des tests unitaires dans C. Qu'est-ce que vous pouvez en parler?

J'ai déjà trouvé des options, comme: Cunit, Commage, mignon et autres. Le problème est que je ne sais pas comment évaluer le meilleur. J'écris un simple compilateur pour mon cours de Compilers College.

Pourriez-vous m'aider?

c tdd

2 commentaires

J'aimerais avoir quelque chose de simple, comme le plus mignon ( mignon.sourceforge.net ) mais je voudrais aussi Avoir quelque chose avec une grande sortie, comme Cutter ( Cutter.sourceforge.net ). Mais il semble vraiment que je ne peux pas avoir les deux.


J'aimerais aussi voir une réponse à cette question aussi.


4 Réponses :


3
votes

Vous pouvez utiliser n'importe quel cadre de test de l'unité C ou C ++. Il est suffisamment facile d'appeler C Fonctions C de C ++.

Mon avis est que vous souhaitez avoir aussi peu de rendement que possible de vos tests. C'est-à-dire si tout va bien, il devrait imprimer '100% passé' . Sinon, il ne devrait imprimer que des détails des échecs de test.

voir XProgramming.com (lien d'origine cassé; Ici, c'est sur le chemin du retour ), faites défiler jusqu'à la table de test de l'unité et recherchez le < Code> langage C ou C ++ Crayworks. Le plus «standard» semble être CPPUnit.


2 commentaires

Dans de nombreux environnements qui utilisent c, vous pouvez seulement utiliser des cadres C. SO C ++ ne sont probablement pas utiles ici, d'autant plus que l'OP parle d'un cours de compilateur à l'université qui ne va probablement pas le laisser Utilisez C ++ dans son projet.


C'est vrai que, par exemple, un compilateur C incorporé qui fonctionne sous Windows, mais cible un microcontrôleur compile uniquement C, mais il serait suffisamment facile de compiler votre code dans, dites, Visual Studio. Vous pouvez ensuite écrire des tests en C ++ avec tout le cadre de test de l'unité C ++ souhaité.



3
votes

J'ai utilisé GTEST et a trouvé qu'il est assez facile à utiliser (il est c ++ cependant). Vraiment cependant, cela n'a pas beaucoup d'importance que vous choisissez. Viens de choisir un et apprenez-le.


2 commentaires

Dans de nombreux environnements qui utilisent c, vous pouvez seulement utiliser des cadres C. SO C ++ ne sont probablement pas utiles ici, d'autant plus que l'OP parle d'un cours de compilateur à l'université qui ne va probablement pas le laisser Utilisez C ++ dans son projet.


Afaik GTEST peut également être utilisé avec C, car il ne fait que l'utilisation de macros, il ne devrait donc y avoir aucune dépendance C ++.



2
votes

Il y a une page de wiki qui répertorie les informations sur environ 20 Cadres de test de l'unité compatible C . Bien qu'il ne s'agisse pas de suffisamment d'informations pour prendre une décision, c'est un point de départ décent.


0 commentaires

3
votes

Unity , un cadre de test pour C a un ensemble riche d'affirmations, y compris Comparaisons de bloc bitwise et de mémoire. Si vous ne faites pas affaire avec une grande stratégie de basebase, je vous recommanderais d'utiliser Ceedling , le projet parent de l'unité. Ceedling construit vos tests d'unité, code de production et intègre un beau cadre moqueur appelé CMOCK . CMOCK peut générer automatiquement un module / substitut d'un module de son en-tête d'interface publique.

Il y a une vidéo vous montrant comment Commencez avec Ceedling et Unité . (Disclaimer: J'ai créé la vidéo).

Une alternative est CPPUTEST . Il compile une bibliothèque statique (2 si vous souhaitez utiliser son cadre moqueur, cppumock ). Les tests sont écrits en C ++ et s'intègre à votre projet Makefile existant. Il propose également des alternatives de détection de fuite de mémoire pour MALLOC / GRATUIT, NOUVEAU / DELETE. En comparaison, ce sont des assertions ne sont pas aussi complètes que l'unité, mais il est probablement mieux adapté à tester des projets hérités C / C ++.


0 commentaires