Question

Je veux mettre en place une intégration continue et d'un cadre de test pour mon open source C ++ projet. Les caractéristiques souhaitées sont:

1. check out the source code
2. run all the unit and other tests
3. run performance tests (these measure the software quality - for example how long does it take the system to complete the test)
4. produce a report based on 3. and 4. daily
5. archive the reports for future reference

Pour mettre en œuvre ce qui cadre d'essai et ce processus d'intégration continue recommanderiez-vous? En ce moment, je me penche vers Google cadre de test (je suis au courant de certaines des comparaisons de cadres de tests unitaires discutés dans d'autres des questions) pour les tests et cruisecontrol pour l'intégration continue. Mais je ne sais pas si cruisecontrol permet une intégration facile des mesures de performance.

Modifier : Pour répondre Wilhelmtell, le code devrait fonctionner avec Windows et Linux

.
Était-ce utile?

La solution

J'utilise CruiseControl et UnitTest ++ aujourd'hui exactement pour cette tâche.

UnitTest ++ est vraiment sympa, bien que je me sens parfois limité par autour du coin. Au moins, il est 10 fois mieux que cppunit. Toujours pas essayé le cadre de tests Google, ce sera pour mon prochain projet.

Je suis extrêmement déçu par CruiseControl. Il y a quelques bugs et questions posées sur la liste de diffusion ont jamais répondu. La plupart des fonctions « par défaut » pour gérer l'exécution du programme et l'exploitation forestière n'étaient pas satisfaisant. Nous devions écrire notre propre génération de rapports, notre propre stdout et stderr capture, notre propre logiciel de messagerie d'état. Il n'y a pas grand-chose pour CruiseControl, en dehors de l'essai en cours d'exécution à intervalles réguliers et de les rassembler dans un serveur web central.

Autres conseils

J'ai écrit un article qui pourrait vous aider. Il décrit l'intégration continue du code C ++ en utilisant googletest et hudson, en utilisant gcov pour les mesures de couverture de code. http: // meekrosoft. wordpress.com/2010/06/02/continuous-code-coverage-with-gcc-googletest-and-hudson/

Votre question est double. Comme vous l'avez dit vous-même, le choix d'une bibliothèque de tests unitaires est une question. Oui, je pense que GoogleTest est très bien. Je l'aime parce qu'il se sent léger en termes d'utilisation. UnitTest ++ est encore plus. Peu importe celui que vous choisissez.

Je n'ai aucune expérience avec CruiseControl, mais en regardant l'ensemble de vos besoins, je serais probablement écrire un script pour faire le travail. Chaque exigence peut être facilement fait par au moins un outil, donc juste coller les outils ensemble.

À moins que vos rapports doivent être au format HTML, XML, LaTeX ou autre format de fantaisie, j'utiliser Bash. Ensuite, vous pouvez juste time commandes, sed en sortie du unittest binaire et ainsi de suite. Pourtant, vous pourriez choisir Bash pour les formats plus complexes de toute façon si vous aimez vraiment Bash et êtes habitué. Par exemple, vous pouvez écrire un modèle HTML pour le rapport à l'aide des espaces réservés, puis remplacer les espaces réservés par les données.

Si vos tâches sont plus complexes, par exemple parce que vous voulez que le script à exécuter sur d'autres plates-formes aussi je serais probablement utiliser Ruby ou Python. Dans Ruby, par exemple, vous pouvez utiliser Markaby pour la sortie de votre HTML. De toute façon, soit Bash, Ruby ou Python sont excellents pour le traitement de texte ou pour cette tâche en général. Je pense que vous pourriez se moquer un petit script qui ferait le travail en un rien de temps.

Ce qui est bien est que si vous utilisez alors un script, vous pouvez également le joindre comme un crochet à presque tous les systèmes de contrôle de version moderne. Par exemple, vous pouvez configurer un crochet Subversion ou Git tel que le script sera exécuté sur une validation.

Nous utilisons une combinaison de NAnt , croisière Control.NET , et href="http://apps.sourceforge.net/mediawiki/cppunit/index.php?title=Main_Page" rel="nofollow noreferrer"> CppUnit tout cela fonctionne assez bien.

Cependant, il est que tout récemment que nous avons passés de Windows vers Windows et Linux. Actuellement, seuls bjam et CppUnit sont utilisés sur les deux plates-formes.

Nos scripts NAnt ne seront pas un problème au port; NAnt fonctionne très bien sous mono . CC.NET peut-être moins - nous ne sommes pas allés dans cette voie, mais il n'y a pas beaucoup de documentation pour le faire fonctionner sous mono / Apache ...

Nous envisageons de remplacer CC.NET avec Hudson ; c'est un système très prometteurs. Cruise Control est également très bon.

Nous avons également envisagé de passer CppUnit à un autre cadre de test, mais en ce moment qu'il fait la fin du travail. GoogleTest (en particulier avec la nouvelle bibliothèque maquette), UnitTest ++ et Boost test sont tous à l'étude.

Je sais que peut-être pas une réponse concluante, mais je l'espère il y a quelque chose là-dedans utile pour vous!

Je préfère CruiseControl.Net avec cppunit, mais je n'ai aucune expérience ou connaissance du framework de test google. Cependant, pour intergration continue facile et gratuit, vous ne pouvez pas battre CruiseControl.NET surtout avec tous les frameworks de tests, construire des systèmes, et d'autres dons publicitaires qu'il prend en charge.

Vous pouvez également poser cette question sur le CruiseControl liste de diffusion utilisateur pour voir si d'autres font la même chose.

  

Mais je ne sais pas si cruisecontrol   permet une intégration facile de la performance   métriques.

Il y a deux façons dont vous pouvez gérer vos paramètres de performance avec CruiseControl:

  1. Si vous avez des données XML, vous pouvez fusionner dans le fichier journal intégrer ensuite dans un email et pages web avec quelques .xsl ou
  2. Si vous avez un rapport html, vous pouvez utiliser l'éditeur d'artefact pour le rendre disponible à partir de l'interface Web en utilisant le éditeur d'artefact .

Je suis un peu biaisé sur le sujet parce que je travaille sur le projet CruiseControl mais il y a plusieurs autres outils CI qui fonctionnent aussi bien.

Nous utilisons UnitTest ++ et Hudson.

Je trouve Hudson très facile à utiliser et extrêmement configurable, avec beaucoup de plug-ins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top