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 :

UnitTest CodeCoverage Visual PRO C++


Sujet :

C++

  1. #1
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut UnitTest CodeCoverage Visual PRO C++
    Bonjour à tous,

    J'ai un projet avec une dll dynamic qui n'est pas du C++/CLI.
    Je voudrais faire des tests unitaire avec visual (pour l'instant c'est une lib c++/CLI de test unitaire qui fonctionne de manière impecable dans visual) et en sortir un code coverage de la dll testée.
    Je suis avec la version PRO de visual 2013, donc je n'ai pas accès aux outils visual de code coverage.

    Voici donc comment est fait mon projet:
    Une dll dynamic en C++ <- celle que je veux tester
    Une shared dll <- Ma dll de test que je lance avec vstest.console.exe ou directement dans visual

    Ma shared dll a une dépendance sur la dll dynamic et test les fonctions exportées de la dll dynamic.

    Donc après quelques recherches, j'ai testé:
    OpenCover (qui ne fonctionne que sur du C++/CLI donc pas sur ma dll à tester).
    OpenCppCoverage qui semble bien fonctionner mais ne me sors que le coverage de ma dll de test.

    Auriez-vous une idée qui me permettrait de sortir le code coverage depuis les unit test visual sans prendre visual ultimate (limitation de ma société, on doit rester avec visual pro)?
    Sachant que je dois respecter quelques conditions:
    Pas de modification du code de la dll à tester.
    Pas de modification des propriété de la dll à tester.
    Est autorisé le rajout d'outil d'analyse qui peuvent se lancer en ligne de commande (donc externe à visual).
    Utilisé le framework de test de visual pour les test unitaire.

    Merci d'avance si vous avez ne serait-ce qu'un bout d'idée. Au passage, si vous pouviez me dire comment vous fonctionnez dans votre entreprise pour réalisé le code coverage des test unitaire, ça m’intéresse et me donnera peut-etre des idées/argument pour changer la manière de faire actuellement.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Points : 345
    Points
    345
    Par défaut
    Bonjour,

    Ça m'intéresse également fortement puisque nous somme confronté au même cas dans mon entreprise; voilà comment nous pensons aborder le problème:
    Une dll à tester
    Un exe testant la dll (via boost.tests)
    OpenCppCoverage via le plugin visual

    Pour OpenCppCoverage il est à mon avis plus intéressant de le lancer en ligne de commande car tu peux lui spécifier quels sont les fichiers sources à considérer pour le coverage.

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 159
    Points
    3 159
    Par défaut
    Hello

    Es-tu sûr que la dll à tester est bien compilée avec le support du coverage ? Ton problème ressemble plus à un souci de configuration.

  4. #4
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Ma dll est compilé en DEBUG mais sans le /PROFILE. Je ne peux pas toucher à la configuration de cette dll.
    Le coverage fonctionne bien sur ma dll de test (celle que je lance avec vstest, je vois bien le code coverage sur les fonctions de test unitaire, mais pas sur les fonctions testées).

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 159
    Points
    3 159
    Par défaut
    Si le code n'est pas instrumenté pour faire le coverage, ça va être compliqué . Je ne vois pas ce que tu peux faire d'autre que réclamer une version avec /PROFILE au responsable de cette bilbiothèque.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Points : 345
    Points
    345
    Par défaut
    Pour OpenCppCoverage, il me semble que l'on a juste besoin d'une version debug + pdb pour le coverage; pas besoin d'une compilation spécifique

  7. #7
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    C'est ce que j'ai cru comprendre aussi, et je connais des profiler sous linux (avec callgrind par exemple) où juste les infos de debug permettent de faire un coverage correct, ensuite je sais pas si sur windows ça fonctionne pareil, mais ça devrait .

    Ensuite si vous connaissez des outils qui ne s'intègre pas forcément à visual mais qui peuvent détecter le code utilisé à partir d'un exécutable, ça pourrait le faire je pense.
    Mon but est de trouvé quels lignes sont utilisé dans la dll testé (dont je connais le chemin des sources) à partir de l’exécutable vstest (qui charge ma dll de test qui contient donc la dll testée).
    Meme un outil qui relie tout les calls à des infos de debug pourrait me satisfaire, ensuite je ferais un script pour extraire seulement les infos dont j'ai besoin .

    EDIT:
    Par contre le problème avec cppcoverage, ça serait pas une histoire de C++/CLI? J'ai cru lire quelquepart qu'il gérait que les sources en c++/CLI du fait que l’exécutable venait s'insérer entre les call CLI et c++?

Discussions similaires

  1. Passage de visual C++ express vers visual Studio pro
    Par Arnaud Malabeux dans le forum MFC
    Réponses: 11
    Dernier message: 02/06/2006, 09h33
  2. Visual C++ 6 Pro
    Par cladane dans le forum MFC
    Réponses: 7
    Dernier message: 03/03/2006, 20h45
  3. Vends Visual Studio 6.0 Pro
    Par rigel dans le forum MFC
    Réponses: 9
    Dernier message: 20/04/2005, 19h51
  4. []visual studio 6 sous xp pro
    Par Eldac59 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/10/2004, 23h51
  5. [Pro C-C++]configuration visual cpp??!!
    Par itsmii dans le forum MFC
    Réponses: 3
    Dernier message: 07/09/2004, 17h42

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