IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment faire des test unitaire "facilement"?


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Points : 55
    Points
    55
    Par défaut Comment faire des test unitaire "facilement"?
    Bonjour,

    Je souhaite me faire un petit utilitaire en C donc pour tester une librairie. Seulement si je pouvais écrire des fonctions générique qui me permette de tester d'autre chose avec, ça serait bien. Le soucis c'est que je n'arrive pas a écrire une fonction:

    Dans ma tête, elle reseemble a ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int assert_equal(pointeur sur une fonction, void **args, size_t n);
    Donc je ne sais pas comment écrire mon pointeur sur fonction par ce qu'il prend n args inconnu.
    Je voudrais stoquer tout les paramètres a envoyer à cette fonction par le biais d'un tableau a double entré pour me mettre d'y n'importe plusieurs type dans celui çi mais je ne sais pas comment appeller la fonction avec ce qu'il y a dans le tableau mais "décompressé".
    Et n, qui est le nombre d'argument contenu dans mon args..

    Est-ce que c'est possible de faire ça en C? Est ce qu'il y a une meilleur construction de cette fonction assert_equal? D'autres conseils?

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 040
    Points
    31 040
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par minipopov Voir le message
    Donc je ne sais pas comment écrire mon pointeur sur fonction par ce qu'il prend n args inconnu.
    Faut voir du côté de va_args => https://c.developpez.com/cours/berna...ne/node118.php

  3. #3
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Attention avec va_args car comme indiqué :
    il doit y avoir correspondance parfaite entre le type de la variable et celui passé en paramètre à la macro va_arg().
    Donc si fonction générique il faut aussi penser à passer en paramètre la liste des tailles. (exemple : printf)

    Car si tu empiles un int8 suivi d'un int32 et en finissant avec un int16 il faut les dépiler avec la bonne taille.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 126
    Points : 33 033
    Points
    33 033
    Billets dans le blog
    4
    Par défaut
    Sinon tu peux utiliser des macros.
    Je suppose que assert_equal doit tester que la fonction retourne une valeur ? Où se trouve la valeur ?
    Quelque chose comme #define ASSERT_EQUAL(fct, EXPECTED_RESULT) et tu peux passer directement l'appel avec ses paramètres en fct ASSERT_EQUAL(MyFunction(1,2,"toto"), 42);

Discussions similaires

  1. Comment faire des test unitaires en plsql ?
    Par patmaba dans le forum PL/SQL
    Réponses: 4
    Dernier message: 20/09/2012, 15h29
  2. Réponses: 0
    Dernier message: 03/09/2012, 15h16
  3. Réponses: 0
    Dernier message: 28/03/2011, 16h24
  4. Comment faire des tests à grande echelle?
    Par kisitomomotene dans le forum Test
    Réponses: 2
    Dernier message: 16/12/2006, 20h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo