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 :

Débuter avec cxxTest


Sujet :

C++

  1. #1
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 856
    Points : 1 828
    Points
    1 828
    Par défaut Débuter avec cxxTest
    Bonjour,

    Je voudrais apprendre à utiliser cxxTest. Je suis sous Visual C++ 2008 Express Edition.

    Il y a bien des guides sur comment faire des suites de tests, etc., mais mon problème se trouve en amont, sur la façon d'intégrer cxxTest lui-même.

    Plus en détail :
    - est-ce-que je crée un nouveau projet dans la même solution que le projet à tester ?
    - quels sont les fichiers à inclure ?
    - il m'a semblé lire que cxxTest était constitué de header, fais-je erreur (il y a des .h et des .cpp dans le répertoire que j'ai téléchargé) ?
    - en-dehors des liens à faire avec le projet à tester, y a-t-il des options à spécifier pour que ça fonctionne correctement ?
    - quel va être le rôle des script Perl/Python, à quel emplacement doit-on les mettre ?

    Voilà, j'espère que quelqu'un pourra me donner quelques précisions

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 273
    Points : 10 831
    Points
    10 831
    Par défaut
    a- aucune idée, je l'ai toujours utilisé avec des makefile et non visual jusqu'à présent

    b-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <cxxtest/TestSuite.h>
    c- Ne t'inquiète pas des .cpp

    d- choisir le "générateur", et en gros c'est tout.

    e- Les scripts Perl (pas de Python dans mes souvenirs) s'occupent d'"instrospecter" ton code de test pour déduire les fonctions de test à exécuter.
    Tu les mets où tu veux. Soit tu y fais une référence explicite depuis ton makefile (ou assimilé), soit dans ton $PATH (tant que le shebang est bien positionné pour retrouver l'interpréteur perl)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 856
    Points : 1 828
    Points
    1 828
    Par défaut
    Il y a maintenant un script pour python.

    J'ai encore du mal à m'y retrouver, parce-que je ne connaissais pas le Perl (du coup j'ai commencé à apprendre quelques bases cette semaine), et je n'ai (malheureusement) pas été formé à l'utilisation des makefile, j'ai toujours travaillé sur des EDI (va falloir que je m'y mette aussi). Alors pour l'instant j'ai encore un peu de mal à voir où je vais.

    Dans ton makefile, tu mentionnes tous les fichier .h/.cpp de cxxTest et du projet à tester ? Ou seulement TestSuite.h ? Le script Perl est appelé à la compilation du projet de test ?

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 273
    Points : 10 831
    Points
    10 831
    Par défaut
    Façon sans règles implicites, et cxxtestgen.pl dans le $PATH
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test_auto_MB.cpp: test_auto_MB.hpp
            cxxtestgen.pl -error-printer -o $@ $^
     
    test_auto_MB: test_auto_MB.cpp 
            $(CPP_COMPILER) ${CC_FLAGS} ${INCLUDE_PATH} -o $@ $^ ${LIBRARIES}
    Mais ... pour VC ... les choses sont quelques peu différentes.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 856
    Points : 1 828
    Points
    1 828
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Mais ... pour VC ... les choses sont quelques peu différentes.
    Comme d'hab ... ('tin de bug de m**** qui empêche d'installer C::B sur Vista )

    Quand tu mentionnes le $PATH, tu veux parler du $PATH général de l'OS, ou d'un $PATH dans l'EDI ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : juin 2006
    Messages : 1 294
    Points : 1 516
    Points
    1 516
    Par défaut
    Salut,

    Ça me parait un peu lourd et compliqué d'avoir à passer par des scripts pour détecter les fonctions à exécuter...
    Y'a vraiment pas d'autre méthode avec CxxTest ?
    Tous les frameworks que j'ai essayés ont dans mes souvenirs au moins des macros pour faciliter les choses, style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BOOST_AUTO_TEST_CASE( MyTestName )
    {
       ...
    }
    MAT.

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 273
    Points : 10 831
    Points
    10 831
    Par défaut
    C'est beaucoup moins lourd que de copier-coller tous les noms de fonctions que tu veux exécuter -- personnellement, je trouve cette approche bien plus intelligente, une vraie approche de fainéant.

    Avec CxxTest, 0 macros redondantes de ce genre : on ne cherche pas à faire faire au langage ce qu'un outil est capable de faire automagiquement.
    A ma connaissance seul FRUCTOSE a emboité le pas dans cette voie.


    Quant au PATH, il peut être réglé niveau OS, ou niveau outil. Ce n'est qu'un détail. Au pire, un appel à "perl /chemin/complet/cxxtestgen.pl" marche tout aussi bien.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : juin 2006
    Messages : 1 294
    Points : 1 516
    Points
    1 516
    Par défaut
    Copier-coller ? Redondante ?
    Y'a rien à copier-coller, y'a une seule occurrence de la fonction, il suffit vraiment juste du bout de code que j'ai cité...

    MAT.

  9. #9
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 856
    Points : 1 828
    Points
    1 828
    Par défaut
    Bon, ben j'ai réussi à lancer mes 2 premiers tests, c'est toujours ça.
    C'est juste dommage que je ne sache pas encore exactement ce que je fais, j'ai l'impression de manipuler une cuillère à café avec des moufles
    Maintenant que ça marche, va falloir que je comprenne pourquoi et comment

    TUT (http://tut-framework.sourceforge.net/) utilise les template, mais l'enregistrement des tests dans le runner se fait également de façon automatique. L'écriture des test est tout aussi légère.

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 273
    Points : 10 831
    Points
    10 831
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Copier-coller ? Redondante ?
    Y'a rien à copier-coller, y'a une seule occurrence de la fonction, il suffit vraiment juste du bout de code que j'ai cité...

    MAT.
    Hum ...[google]... d'un exemple à l'autre, cela va de simple à plein de trucs copiés-collés. Aux macros à la MFC près, la situation est effectivement mieux que ce que j'avais retenu.

    Petit exemple de fichier de test avec cxxtest:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // test_BCD.hpp
    class BCDDecodeIntTestSuite : public CxxTest::TestSuite 
    {
    public:
        void test_0()
        {
            const unsigned char buf[4] = { 0x00 };
            STATIC_CHECK(array_size(buf) == 4, Invalid_Buffer_Size);
     
            const int res = TLK::BCD::decode<int32>(buf);
            TS_ASSERT_EQUALS(0, res);
        }
     
        void test_0f()
        {
            const unsigned char buf[4] = { 0x0f };
            STATIC_CHECK(array_size(buf) == 4, Invalid_Buffer_Size);
     
            const int res = TLK::BCD::decode<int32>(buf);
            TS_ASSERT_EQUALS(0, res);
        }
    };
    Et ... c'est tout. Pas de .cpp à écrire, de fonctions à lister, ...

    Avec FRUCTOSE, ce sont les deux les plus automatisés. Les seuls trucs à respecter : hériter de la bonne classe, et nommer chaque fonction de test "test_xxx()".
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. débuter avec Visual .NET
    Par akimmm dans le forum MFC
    Réponses: 4
    Dernier message: 28/10/2005, 04h53
  2. [GridBagLayout] Comment débuter avec ce layout
    Par Bighobbit dans le forum Débuter
    Réponses: 12
    Dernier message: 28/09/2005, 17h13
  3. [MFC je crois] Débuter avec visual c++
    Par flzox dans le forum MFC
    Réponses: 6
    Dernier message: 28/06/2005, 18h31
  4. [JAXP] Débuter avec XML et Java
    Par Fleep dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 04/05/2005, 11h27
  5. Débuter avec Java
    Par reptils dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 11/07/2004, 21h26

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