Hogyan hozzunk létre egység tesztelése Visual Studio C ++

szavazat
87

Gondjaim kitalálni, hogyan lehet a vizsgálat keretében létrehozott és használhatóak Visual Studio 2008 C ++ feltehetően a beépített egység tesztelése suite.

Minden kapcsolat vagy ismertetők lenne méltányol.

A kérdést 06/08/2008 08:57
a forrás felhasználó
Más nyelveken...                            


12 válasz

szavazat
55

Ez az oldal segíthet, hogy felülvizsgálja jó néhány C ++ egység vizsgálati keretek:

  • CppUnit
  • Boost.Test
  • CppUnitLite
  • NanoCppUnit
  • egység ++
  • CxxTest

Távozás CPPUnitLite vagy CPPUnitLite2 .

CPPUnitLite hozta létre Michael Toll aki eredetileg portolták Java JUnit a C ++ mint CPPUnit (CPPUnit próbálkozás utánozzák a fejlesztési modell a JUnit -, de C ++ hiányzik Java funkciók [pl gondolkodás], hogy könnyen kezelhető).

CPPUnitLite megkísérli egy igazi C ++ - style vizsgálat keretében, nem pedig egy Java egy portolták C ++. (Én parafrázisa származó Feather hatékony együttműködés kód Legacy könyv). CPPUnitLite2 úgy tűnik, hogy egy másik átírni, több funkció és hibajavítás.

Én is csak botlott unittest ++ amely magában foglalja a dolgokat CPPUnitLite2 és néhány más keretet.

A Microsoft kiadta WinUnit .

Szintén pénztár fogás vagy Doctest

Válaszolt 30/08/2008 14:51
a forrás felhasználó

szavazat
24

Van egy módja annak, hogy teszteljék menedzselt C ++ segítségével a beépített tesztelési keretrendszer a Visual Studio 2008 . Ha létrehoz egy C ++ Test Project, a C ++ / CLI, akkor majd, hogy felhívja a menedzselt DLL. Meg kell kapcsolni a Common Language Runtime támogatása / CLR tól / CLR: biztonságos, ha a tesztelni kívánt kódot írták menedzselt C ++.

Van lépésről lépésre részletek a blogomban itt: http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/

Válaszolt 05/05/2009 14:54
a forrás felhasználó

szavazat
9

Itt a megközelítés azt használni, hogy teszteljék az IIS URL-átírási modul a Microsoft (ez parancssorból, de működnie kell VS is):

  1. Győződjön meg róla, hogy a header fájlokat fogyasztható mozgatásával forráskód CPP fájlok és előre irányuló nyilatkozatot, ha szükséges.
  2. Fordítsd meg a kódot, hogy teszteljék a könyvtár (.lib)
  3. Készítse el unittest projekt C ++ CLR támogatást.
  4. Tartalmazza a header fájlokat.
  5. Tartalmazza a .lib fájlokat.
  6. Add utalás Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
  7. Használjon egy nagyon kis osztály kimondó az egység teszt és ugrani sikerült C ++ / A natív kód, mint ez (esetleg elírás):

Itt egy példa:

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

Ezzel a megközelítéssel, az emberek nem kell tanulni túl sok C ++ / CLI dolog, minden igazi teszt kerül sor C ++ natív és a TestShim osztály kerül felhasználásra a „közzététel” a teszt MSTest.exe (vagy láthatóvá tenni ).

Hozzáadására tesztek csak nyilvánítja egy új [TestMethod] void NewTest () {:: NewTest ();} módszer és egy új void NewTest () a natív funkcióját. Nem makrók, nincs trükk, straighforward.

Most, a Heade fájl adott, de lehet, hogy ki a Assert osztály eljárásainak C ++ natív aláírást (pl wchar_t * helyett Stirng ^), így tudod tartani közel C ++ és messze C ++ / CLI :

Itt egy példa:

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

Válaszolt 01/12/2009 22:56
a forrás felhasználó

szavazat
6

Személy szerint én inkább WinUnit mivel nem követeli meg, hogy írjon valamit, kivéve én teszt (építek egy .dll, mint a teszt, nem egy exe). Csak építeni egy projekt, és pont WinUnit.exe az én teszt kimeneti könyvtárat és fut mindent megtalál. Akkor töltse le a WinUnit projekt ide . (MSDN most le kell töltenie az egész kérdés, nem a cikk. WinUnit tartalmazza.)

Válaszolt 15/09/2008 17:33
a forrás felhasználó

szavazat
4

A keret tartalmazza VS9 van NET, de akkor írj teszteket C ++ / CLI, hogy amíg te kényelmes tanulási néhány .NET izmusok, akkor képesnek kell lennie, hogy teszteljék a legtöbb olyan C ++ kódot.

boost.test és googletest meg, hogy elég hasonló, de alkalmas némileg eltérő célokra. Mindkét van egy bináris komponens, így szüksége lesz egy extra projekt a megoldás összeállításához és a teszteket.

A keret általunk használt CxxTest , ami sokkal könnyebb; ez csak a fejléceket, és használja a Perl (!) script kaparja tesztsorozat információkat a fejlécek (lakosztály örökölnek CxxTest :: Base, minden vizsgálati módszerek kezdőbetűjét, »test«). Nyilvánvaló, hogy ez megköveteli, hogy kapsz Perl egy forrás vagy egy másik , ami növeli feleslegesen az építmény környezet beállítás.

Válaszolt 14/08/2008 15:17
a forrás felhasználó

szavazat
2

Az eszközök, amelyeket itt említett összes parancssori eszközök. Ha megnézed egy integrált megoldás, hogy egy pillantást CFIX stúdió , amely a Visual Studio AddIn C / C ++ egység tesztelése. Ez nagyon hasonlít a TestDriven.Net, de (nem kezelt) a C / C ++ helyett .NET.

Válaszolt 24/06/2009 07:21
a forrás felhasználó

szavazat
2

ÉN használ unittest ++ .

Az évek óta tettem ezt a bejegyzést a forrás költözött SourceForge GitHub. Szintén a példa bemutató már több agnosztikus - nem megy bele semmilyen konfigurációt, vagy a projekt felállított egyáltalán.

Kétlem, hogy továbbra is működni fog a Visual Studio 6, mivel a projekt fájlok is létre keresztül CGyõzõdjön. Ha mégis szükség lenne a régebbi verziót támogatást kaphat az utolsó elérhető verziója alatt SourceForge ága.

Válaszolt 06/08/2008 09:28
a forrás felhasználó

szavazat
1

Én szenvedett végrehajtása egység tesztelése egy menedzselt C ++ alkalmazás a Windows környezetben a Visual Studio. Így sikerült legyőzni, és írt egy bejegyzést egy lépésről-lépésre útmutatót a menedzselt C ++ alkalmazás egység tesztelése. Remélem, hogy segíthet.

Egység vizsgálat menedzselt C ++ Visual Studio

Válaszolt 07/12/2012 09:32
a forrás felhasználó

szavazat
1

Szeretem a CxxTest valamint ugyanezen okokból. Ez egy header file csak így nincs összekapcsolása szükséges. Ön nem ragadt Perl van egy Python futó is. Azt ellenőrizni fogja a google könyvtár hamarosan. Az emelt dolog húzza túl sok egyéb poggyász.

Válaszolt 27/08/2008 19:15
a forrás felhasználó

szavazat
1

A készülék teszter Visual Studio 2008 csak a .NET kód amennyire én tudom.

Régebben CppUnit a Visual Studio 2005 és úgy találta, hogy nagyon jó.

Amennyire emlékszem, a beállítási viszonylag fájdalommentes. Csak arról, hogy a vizsgálati projektek a kapcsoló (linker → Input → További függőségek) tartalmaz cppunitd.lib.

Ezután #include <cppunit/extensions/HelperMacros.h>a fejlécben.

Ezután kövesse a http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html kap a vizsgálati osztály működik.

Válaszolt 19/08/2008 18:01
a forrás felhasználó

szavazat
1

Nem vagyok 100% biztos VS2008, de tudom, hogy az egység tesztelése keretet, amely a Microsoft szállítottak VS2005 részeként a Team Suite csak .NET, C ++ nem

Már használt CppUnit is, és ez rendben van. Nagyjából ugyanaz, mint NUnit / JUnit / stb.

Ha már használt lökést, akkor is van egy egység tesztelése könyvtár

A fiúk mögött boost van néhány komoly kódolási szelet, így azt mondanám, hogy keretet kell elég jó, de lehet, hogy nem lehet a leginkább felhasználóbarát :-)

Válaszolt 12/08/2008 00:45
a forrás felhasználó

szavazat
1

Már használt CppUnit a VS2005 és az Eclipse. A wiki nagyon alapos (különösen akkor, ha ismeri a JUnit).

Válaszolt 12/08/2008 00:13
a forrás felhasználó

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