Question

Je vais avoir de la difficulté à trouver comment obtenir le cadre de tests de configurer et utilisable dans Visual Studio 2008 pour le C++ sans doute grâce à la suite de tests unitaires.

Des liens ou des tutoriels serait appréciée.

Était-ce utile?

La solution

Cette page peut aider, il passe en revue tout à fait un peu de C++ unité de frameworks de test:

  • CppUnit
  • Coup de pouce.Test
  • CppUnitLite
  • NanoCppUnit
  • Unité++
  • CxxTest

Découvrez CPPUnitLite ou CPPUnitLite2.

CPPUnitLite a été créé par Michael Plumes, qui avait d'abord porté de Java JUnit pour le C++ CPPUnit (CPPUnit essaie d'imiter le modèle de développement de JUnit - mais le C++ manque de Java fonctionnalités [p. ex.réflexion] pour le rendre facile à utiliser).

CPPUnitLite tente de faire un vrai C++-style framework de test, pas un Java un porté à C++.(Je paraphrase de la Plume de l' Travailler Efficacement avec le Code existant livre). CPPUnitLite2 semble être un autre réécrire, avec plus de fonctionnalités et corrections de bugs.

J'ai aussi juste trébuché à travers UnitTest++ qui comprend des trucs de CPPUnitLite2 et un autre cadre.

Microsoft a publié WinUnit.

Aussi checkout Catch ou Doctest

Autres conseils

Il y a un moyen de tester le C++ à l'aide de la construction dans le cadre d'essais au sein de Visual Studio 2008.Si vous créez un C++ Projet de Test, à l'aide de C++/CLI, vous pouvez faire des appels à une DLL non managée.Vous devrez donc passer le Common Language Runtime support /clr de /clr:sûr, si vous voulez tester du code qui a été écrit en C++.

J'ai le détail étape par étape sur mon blog ici: http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/

Voici la démarche que j'ai utiliser pour tester le module de Réécriture d'URL IIS de Microsoft (il est en ligne de commande, mais ils doivent travailler pour VS aussi):

  1. Assurez-vous que vos fichiers d'en-tête sont consommables en déplaçant le code source de fichiers cpp et de l'avant à l'aide de la déclaration si besoin.
  2. Compiler votre code de test, de la bibliothèque (.lib)
  3. Créez votre UnitTest projet en C++ avec le support CLR.
  4. Inclure les fichiers d'en-tête.
  5. Inclure votre .fichiers lib.
  6. Ajouter une référence à Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
  7. Utiliser une très petite classe pour déclarer votre unité de test et de sauter de managed C++/code Natif comme ceci (peut avoir des fautes de frappe):

Voici un exemple:

// Example
#include "stdafx.h"
#include "mstest.h"

// Following code is native code.
#pragma unmanaged
void AddTwoNumbersTest() {
  // Arrange
  Adder yourNativeObject;
  int expected = 3;
  int actual;
  // Act
  actual = yourNativeObject.Add(1, 2);
  // Assert
  Assert::AreEqual(expected, actual, L"1 + 2 != 3");
}

// Following code is C++/CLI (Managed)
#pragma managed
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
[TestClass]
public ref class TestShim {
public:
  [TestMethod]
  void AddTwoNumbersTest() {
     // Just jump to C++ native code (above)
     ::AddTwoNumbersTest();
  }
};

Avec cette approche, les gens n'ont pas à en savoir trop de C++/CLI tout ça, tout le vrai test sera fait en C++ natif et le TestShim classe sera utilisée pour "publier" le test de MSTest.exe (ou de le rendre visible).

Pour ajouter de nouveaux tests que vous venez de déclarer une nouvelle [TestMethod] void NewTest(){::NewTest();} la méthode et un nouveau vide NewTest() fonction native.Pas de macros, pas de trucs, compliquée.

Maintenant, la heade fichier est facultatif, mais il peut être utilisé pour exposer la classe Assert " méthodes en C++ natif de signatures (par ex.wchar_t* au lieu de Stirng^), de sorte qu'il peut vous pouvez le garder près de C++ et loin de C++/CLI:

Voici un exemple:

// Example
#pragma once
#pragma managed(push, on)
using namespace System;
class Assert {
public:
    static void AreEqual(int expected, int actual) {
        Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual(expected, actual);
    }

    static void AreEqual(int expected, int actual, PCWSTR pszMessage) {
        Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual(expected, actual, gcnew String(pszMe
ssage));
    }

    template<typename T>
    static void AreEqual(T expected, T actual) {
        Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual(expected, actual);
    }

    // Etcetera, other overloads...
}
#pragma managed(pop)

HTH

Personnellement, je préfère WinUnit comme il n'a pas besoin de moi pour écrire quoi que ce soit, sauf pour mes tests (Je construire un .dll comme le test, pas un exe).Je viens de construire un projet, et le point WinUnit.exe pour mon test répertoire de sortie et il s'exécute tout ce qu'il trouve.Vous pouvez télécharger le WinUnit projet ici.(MSDN vous demande désormais de télécharger la totalité de l'émission, pas l'article.WinUnit est inclus à l'intérieur.)

Le cadre fourni avec VS9 est .NET, mais vous pouvez écrire des tests en C++/CLI, donc tant que vous êtes à l'aise dans l'apprentissage de quelques .NET ismes, vous devriez être en mesure de tester la plupart de tout code C++.

coup de pouce.test et googletest look assez similaire, mais adapté à légèrement différentes utilisations.Ces deux ont un composant binaire, de sorte que vous aurez besoin d'un projet extra dans votre solution pour compiler et exécuter les tests.

Le cadre que nous utilisons est CxxTest, qui est beaucoup plus léger;c'est uniquement les en-têtes, et utilise un langage Perl (!) script pour gratter la suite de tests d'informations à partir de votre en-tête (suites hériter de CxxTest::Base, tous vos méthodes de test les noms commencent par "test").Évidemment, cela nécessite que vous obtenez Perl à partir de une source ou un autre, qui ajoute de la surcharge à votre environnement de construction de l'installation.

J'utilise UnitTest++.

Dans les années depuis que j'ai fait ce post, la source s'est déplacé à partir de SourceForge pour github.Aussi l' exemple tutoriel il est maintenant plus agnostique - ne pas aller dans n'importe quelle configuration ou d'un projet mis en place à tous.

Je doute qu'il reste du travail pour Visual Studio 6 que les fichiers de projet sont maintenant créés via CMake.Si vous avez encore besoin de la version la plus ancienne de soutien que vous pouvez obtenir la dernière version disponible en vertu de la SourceForge de la branche.

Les outils qui ont été mentionnés ici sont tous les outils de ligne de commande.Si vous recherchez une plus grande intégration de la solution, avoir un regard sur cfix studio, qui est un Visual Studio add-in pour le C/C++ de tests unitaires.Il est tout à fait similaire à TestDriven.Net mais pour (non géré) C/C++ plutôt que .NET.

J'ai utilisé CppUnit avec VS2005 et Eclipse.Le wiki est très complet (surtout si vous êtes familier avec JUnit).

Je ne suis pas sûr à 100% sur VS2008, mais je sais que le framework de Test Unitaire que microsoft livré dans VS2005 comme faisant partie de leur Équipe à la Suite n'était que pour .NET, pas du C++

J'ai utilisé CppUnit aussi et c'était bien.La même que NUnit/JUnit/ainsi de suite.

Si vous avez utilisé boost, ils ont aussi une bibliothèque de tests unitaires

Le gars derrière boost ont certains sérieux le codage des côtelettes, donc je dirais que leur cadre devrait être assez bonne, mais il pourrait ne pas être le plus convivial :-)

J'aime la CxxTest ainsi pour les mêmes raisons.C'est un fichier d'en-tête uniquement, donc pas de lien nécessaire.Vous n'êtes pas coincé avec Perl comme il y a un Python runner.Je vais revoir la bibliothèque de google bientôt.Le coup de pouce des trucs tire trop de bagages.

L'unité de testeur pour Visual Studio 2008 est seulement pour .NET code pour autant que je sais.

J'ai utilisé CppUnit sur Visual Studio 2005 et l'a trouvé pour être très bon.

Aussi loin que je me souvienne, la configuration est relativement indolore.Assurez-vous juste que dans vos projets d'essais à l'éditeur de liens (Linker → Entrée → Dépendances Supplémentaires) comprend cppunitd.lib.

Ensuite, #include <cppunit/extensions/HelperMacros.h> dans votre en-tête.

Vous pouvez ensuite suivre les étapes de http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html pour obtenir votre classe de test de travail.

Je souffrais de mettre en œuvre de tests unitaires pour le C++ de l'application dans un environnement Windows avec Visual Studio.Donc j'ai réussi à surmonter et écrit un post comme une étape-par-étape d'orientation pour le C++ de l'application de tests unitaires.J'espère que ça peut vous aider.

Test unitaire pour le C++ dans Visual Studio

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