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

Boost C++ Discussion :

[Boost.Test]: Pb avec les fixture


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : System Integration Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par défaut [Boost.Test]: Pb avec les fixture
    Bonjour,

    j'ai un petit souci de comprehension des fixtures de tests unitaires.
    D'apres ce que je comprends, quand on déclare une testsuite avec une fixture, la fixture est partagée par tous les tests-cases.

    ce qui m'etonne c'est que si je fais ce qui est ci-dessous, le test échoue. On dirait que la fixture est recréée a chaque fois !

    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
    23
    24
    25
     
    typedef struct SFixture
    {
    	SFixture()
    	{	m_i=0;};
     
    	virtual ~SFixture()
    	{	};
     
    	int m_i;
    }
     
    BOOST_FIXTURE_TEST_SUITE (TestSuite_1, SFixture)
     
    BOOST_AUTO_TEST_CASE( TestCase_1_1 )
    {
    	BOOST_CHECK(m_i==0);
    	m_i=1;
    }
     
    BOOST_AUTO_TEST_CASE( TestCase_1_2 )
    {
    	BOOST_CHECK(m_i==1);
    }
    BOOST_AUTO_TEST_SUITE_END()

    Comment peut-on faire pour modifier une fixture et garder les modifs tout au long d'une test suite ?

    Concretement, je veux faire ceci:
    - testcase_1 : demander la création d'un composant
    - testcase_2...n : tester les differents accesseurs Set/Get (un test case par Set/Get)
    - testcase_n+1 : sauvegarder (avec toutes les modifs donc )
    - testcase_n+2 : relire et comparer aux valeurs que j'ai donné via les Set

    Comment dois-je m'y prendre ?

    V

  2. #2
    Membre éclairé
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : System Integration Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par défaut
    Slt,

    personne n'a d'idée
    bon, voila comment j'ai resolu mon pb. Sans doute pas la meilleure facon mais ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    BOOST_FIXTURE_TEST_SUITE (TestSuite_2, CFixture2)  // fixture test suite. fixture is not really useful here
     
    //static variable -> scope seems to be the testsuite...
    static CPbpPatientData s_PatientData_TestSuite2;
    static std::vector<CString> s_IDsForTest_Guidance;
    static std::vector<CString> s_IDsForTest_Biopsy;
     
    // add test case here
    BOOST_AUTO_TEST_CASE(TestCase_2_1)
    {  //  
    }
    BOOST_AUTO_TEST_SUITE_END()
    Si ca peut aider quelqu'un un jour .....

    Et si c'est pas comme ca qu'il faut faire et que quelqu'un a une meilleure facon a proposer, qu'il ne se gene pas, je suis preneur ...

    V

  3. #3
    Membre Expert

    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
    Par défaut
    Salut,

    Comme tu t'en es aperçu BOOST_FIXTURE_TEST_SUITE permet simplement de positionner une même fixture pour une série de tests, c'est complément équivalent à lister la fixture pour chaque test avec un BOOST_FIXTURE_TEST_CASE.
    Et donc ça ne permet pas de partager des données.

    A mon avis dans ton cas tu ferais aussi bien de séparer tes tests et de ne pas réutiliser le même contexte d'exécution pour tous, c'est un des principes des tests unitaires : isoler chaque test des autres.
    C'est tout de même beaucoup plus sûr et plus facile pour analyser les problèmes potentiels.

    MAT.

  4. #4
    Membre éclairé
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : System Integration Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par défaut
    Slt

    Citation Envoyé par Mat007 Voir le message
    Salut,
    Comme tu t'en es aperçu BOOST_FIXTURE_TEST_SUITE permet simplement de positionner une même fixture pour une série de tests, c'est complément équivalent à lister la fixture pour chaque test avec un BOOST_FIXTURE_TEST_CASE.
    Et donc ça ne permet pas de partager des données.
    Dans ce cas, le terme 'shared' de la doc est trompeur ..

    Citation Envoyé par Mat007 Voir le message
    A mon avis dans ton cas tu ferais aussi bien de séparer tes tests et de ne pas réutiliser le même contexte d'exécution pour tous, c'est un des principes des tests unitaires : isoler chaque test des autres.
    C'est tout de même beaucoup plus sûr et plus facile pour analyser les problèmes potentiels.
    tu as raison mais d'un autre coté, le fait de partager ce composant me permet de faire les Set qu'une seule fois. La classe en question ayant un nombre de variable de classe assez important, ça me fait gagner du code (et donc du temps) de manière non négligeable.

    Le besoin de composant partagé entre plusieurs tests est rare mais quand il est la, le contourner est vraiment tres galère...

    V

  5. #5
    Membre Expert

    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
    Par défaut
    Citation Envoyé par vdaanen Voir le message
    Dans ce cas, le terme 'shared' de la doc est trompeur ..
    Un peu il est vrai... Il faut le voir comme permettant un partage de fixtures et non de données..

    Citation Envoyé par vdaanen Voir le message
    tu as raison mais d'un autre coté, le fait de partager ce composant me permet de faire les Set qu'une seule fois. La classe en question ayant un nombre de variable de classe assez important, ça me fait gagner du code (et donc du temps) de manière non négligeable.
    Je suppose que ce ne sont pas juste des modificateurs/accesseurs basiques ?
    Parce que tester que getTruc() renvoit bien ce qui a été passé au setTruc() ne serait pas très utile dans ce cas...

    MAT.

  6. #6
    Membre éclairé
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : System Integration Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Je suppose que ce ne sont pas juste des modificateurs/accesseurs basiques ?
    Parce que tester que getTruc() renvoit bien ce qui a été passé au setTruc() ne serait pas très utile dans ce cas...
    MAT.
    Il m'est arrivé de mixer des technos et de ne pas avoir les resultats escomptés. Depuis qd il faut faire des Set pour tester la sauvegarde/lecture, je testes les Set/Get... Ca mange pas de pain, dans 99% des cas il n'y a pas de surprise et quand il y en a une ca evite un arrachage de cheveux

    V

Discussions similaires

  1. boost spirit (pb avec les espaces)
    Par amirabg dans le forum Boost
    Réponses: 6
    Dernier message: 16/02/2010, 23h11
  2. Un petit test simple avec les iterator STL
    Par philmor34 dans le forum SL & STL
    Réponses: 4
    Dernier message: 17/11/2008, 11h59
  3. Problème avec les pointeurs intelligents de boost.
    Par Le Barde dans le forum Boost
    Réponses: 2
    Dernier message: 05/09/2007, 12h47
  4. Quick Test Pro: pb avec les boutons radio
    Par odelinne dans le forum Test
    Réponses: 3
    Dernier message: 30/05/2007, 10h07
  5. [BOOST] Problème avec les threads
    Par SOAD08 dans le forum Dev-C++
    Réponses: 7
    Dernier message: 08/10/2006, 10h23

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