Cum de a crea unitate de testare pentru Visual Studio C ++

voturi
87

Am probleme imaginind cum să obțineți cadrul de testare configurat și utilizabil în Visual Studio 2008 pentru C ++, probabil, cu suita de testare unitate de built-in.

Orice link-uri sau tutoriale ar fi apreciat.

Întrebat 06/08/2008 la 08:57
sursa de către utilizator
În alte limbi...                            


12 răspunsuri

voturi
55

Această pagină poate ajuta, aceasta comentarii destul de câteva C ++ cadre de testare unitate:

  • CppUnit
  • Boost.Test
  • CppUnitLite
  • NanoCppUnit
  • Unitatea ++
  • CxxTest

Check out CPPUnitLite sau CPPUnitLite2 .

CPPUnitLite a fost creat de Pene Michael, care inițial portat JUnit Java la C ++ ca CppUnit (încearcă CppUnit imita modelul de dezvoltare JUnit - dar C ++ îi lipsesc caracteristici Java [ de exemplu reflecție] pentru a face mai ușor de utilizat).

CPPUnitLite încearcă să facă o adevărată C ++ - stil cadru de testare, nu Java unul portat la C ++. (Îl parafrazez din pene de lucru in mod eficient cu Codul Legacy carte). CPPUnitLite2 pare a fi un alt rescriere, cu mai multe caracteristici și bug fixat.

De asemenea , am dat peste UnitTest ++ , care include chestii de la CPPUnitLite2 și un alt cadru.

Microsoft a lansat WinUnit .

De asemenea , checkout Catch sau Doctest

Publicat 30/08/2008 la 14:51
sursa de către utilizator

voturi
24

Există o modalitate de a testa unmanaged C ++ folosind construit în cadru de testare în Visual Studio 2008 . Dacă creați un C ++ proiect de testare, folosind C ++ / CLI, puteți face apoi apeluri la un DLL negestionat. Va trebui să comutați suportul Common Language Runtime la / CLR de la / CLR: în condiții de siguranță , dacă doriți să testați codul care a fost scris în negestionate C ++.

Am pas cu pas detalii pe blog - ul meu aici: http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/

Publicat 05/05/2009 la 14:54
sursa de către utilizator

voturi
9

Aici este abordarea am folosi pentru a testa modulul IIS rescriere de adrese URL de la Microsoft (este bazată pe linia de comandă, dar ar trebui să lucreze pentru VS prea):

  1. Asigurați-vă că fișierele antet sunt consumabile prin mutarea codul sursă pentru cpp fișiere și utilizând transmite declarația, dacă este necesar.
  2. Compilați codul pentru a testa ca biblioteca (.lib)
  3. Creați proiectul UnitTest ca C ++ cu suport CLR.
  4. Include fișierele antet.
  5. Include fișierele lib.
  6. Adăugați o referință la Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
  7. Utilizați o clasă foarte mic pentru a declara testul unitate si sari de la C ++ a reușit să codul / nativ ca acesta (poate avea greșeli de tipar):

Iată un exemplu:

// 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();
  }
};

Cu această abordare, oamenii nu trebuie să învețe prea mult C ++ / CLI lucruri, toate adevăratul test se va face în C ++ nativ și clasa TestShim vor fi folosite pentru a „publica“ testul la MSTest.exe (sau să le facă vizibile ).

Pentru adăugarea de noi teste doar declarați o nouă [TestMethod] void NewTest () {:: NewTest ();} metodă și o nouă funcție nativă void NewTest (). Nu există nici un macro-uri, trucuri, straighforward.

Acum, fișierul Heade este opțional, dar poate fi folosit pentru a expune metodele de clasa Assert cu C ++ nativ de semnături (de exemplu, wchar_t * în loc de Stirng ^), astfel încât să poată putea păstra aproape de C ++ și departe de C ++ / CLI :

Iată un exemplu:

// 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

Publicat 01/12/2009 la 22:56
sursa de către utilizator

voturi
6

Personal, prefer WinUnit , deoarece nu - mi cere să scrie nimic , cu excepția testelor mele (am construi un .dll ca test, nu un exe). Am construit doar un proiect, și punctul WinUnit.exe la directorul meu de ieșire de testare și se execută tot ce găsește. Puteți descărca proiectul WinUnit aici . (MSDN vă cere acum să descărcați întreaga problemă, nu articol. WinUnit este inclus în.)

Publicat 15/09/2008 la 17:33
sursa de către utilizator

voturi
4

Cadrul inclus cu VS9 este NET, dar puteți scrie teste în C ++ / CLI, astfel încât , atâta timp cât sunteți confortabil de învățare unele SMSI .NET, ar trebui să fie capabil de a testa cele mai orice cod C ++.

boost.test și googletest aspect să fie destul de asemănătoare, dar adaptat pentru utilizări ușor diferite. Ambele au o componentă binar, astfel încât veți avea nevoie de un proiect suplimentar în soluția de a compila și rula testele.

Cadrul folosit este CxxTest , care este mult mai ușor; este doar antetele, și utilizează un script Perl (!) pentru a îndepărta informațiile suita de teste de la antete (apartamente moștenesc de la CxxTest :: Base, toate numele metodele de testare încep cu «test»). Evident, acest lucru necesită ca să obțineți Perl dintr - o singură sursă sau alta , care se adaugă costuri suplimentare pentru configurarea mediului construi.

Publicat 14/08/2008 la 15:17
sursa de către utilizator

voturi
2

Instrumentele care au fost menționate aici sunt toate instrumentele de linie de comandă. Dacă te uiți pentru o soluție mai integrată, au o privire la studio cfix , care este un Visual Studio AddIn pentru C / C ++ unitate de testare. Este destul de similar cu TestDriven.Net, dar pentru (unmanaged) C / C ++ , mai degrabă decât .NET.

Publicat 24/06/2009 la 07:21
sursa de către utilizator

voturi
2

Eu folosesc UnitTest ++ .

În anii de când am făcut acest post sursa sa mutat de la SourceForge la GitHub. De asemenea, de exemplu , tutorial este acum mult mai agnostic - nu merge în orice configurație sau proiect creat la toate.

Mă îndoiesc că va lucra în continuare pentru Visual Studio 6 ca fișierele de proiect sunt create acum prin CMake. Dacă aveți în continuare nevoie de sprijin mai în vârstă versiune puteți obține ultima versiune disponibilă sub SourceForge sucursalei.

Publicat 06/08/2008 la 09:28
sursa de către utilizator

voturi
1

Sufeream să pună în aplicare unitate de testare pentru o aplicație C ++ unmanaged într-un mediu Windows cu Visual Studio. Așa că am reușit să depășească și a scris un post ca un ghid pas cu pas la C unitate de aplicare de testare negestionate ++. Sper că vă poate ajuta.

Unitatea de testare pentru C ++ neadministrate în Visual Studio

Publicat 07/12/2012 la 09:32
sursa de către utilizator

voturi
1

Îmi place CxxTest, precum și pentru aceleași motive. Este un fișier antet numai astfel încât nu este necesar de legătură. Nu sunt lipite cu Perl ca exista un alergător Python, de asemenea. Voi fi revizuirea biblioteca Google în curând. Lucrurile Boost trage prea mult celelalte bagaje.

Publicat 27/08/2008 la 19:15
sursa de către utilizator

voturi
1

Unitatea tester pentru Visual Studio 2008 este doar pentru codul NET, în măsura în care știu.

Am folosit CppUnit pe Visual Studio 2005 si a constatat ca acesta să fie destul de bine.

Din câte îmi amintesc, setup-ul a fost relativ nedureros. Doar asigurați-vă că în testarea proiectele dvs. linker-ul (Linker → Input → Dependențe suplimentare) include cppunitd.lib.

Apoi, #include <cppunit/extensions/HelperMacros.h>în antetul dumneavoastră.

Aveți posibilitatea să urmați apoi pașii din http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html pentru a obține de lucru clasa de test.

Publicat 19/08/2008 la 18:01
sursa de către utilizator

voturi
1

Nu sunt 100% sigur VS2008, dar eu știu că cadrul Unității de testare pe care Microsoft a fost expediat în VS2005, ca parte din suita lor Team a fost doar pentru .NET, C ++ nu

Am folosit CppUnit de asemenea, și a fost bine. O mare parte la fel ca NUnit / JUnit / așa mai departe.

Dacă ați utilizat impuls, ele au , de asemenea , o bibliotecă de testare unitate

Baietii din spatele impuls au unele grave cotletul de codificare, așa aș spune că cadrul lor ar trebui să fie destul de bine, dar s - ar putea să nu fie cel mai prietenos utilizator :-)

Publicat 12/08/2008 la 00:45
sursa de către utilizator

voturi
1

Am folosit CppUnit cu VS2005 si Eclipse. Wiki este foarte amănunțită (mai ales dacă sunteți familiarizați cu JUnit).

Publicat 12/08/2008 la 00:13
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more