Jak nastavit jednotky testování pro Visual Studio C ++

hlasů
87

Mám potíže se přijít na to, jak se dostat rámec testování nastavení a použitelné ve Visual Studio 2008 pro C ++ pravděpodobně s vestavěným testovací jednotka apartmá.

Jakékoliv odkazy nebo konzultace by ocenili.

Položena 06/08/2008 v 08:57
zdroj uživatelem
V jiných jazycích...                            


12 odpovědí

hlasů
55

Tato stránka může pomoci, přezkoumává nemálo C ++ jednotka testovací rámců:

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

Podívejte se na CPPUnitLite nebo CPPUnitLite2 .

CPPUnitLite byl vytvořen Michael peří, kteří původně přenesených Java JUnit k C ++ jako CppUnit (CppUnit snaží napodobit model rozvojovou JUnit - ale C ++ chybí Java je funkce [například odrazové], aby bylo snadné použití).

CPPUnitLite pokusí vytvořit skutečnou C ++ - style testování rámec, není Java jeden portován na C ++. (Já parafrázovat z peří je Efektivní práce s Legacy Kód knihy). CPPUnitLite2 se zdá být jiný přepis, s více funkcemi a opravami chyb.

Také jsem právě narazil UnitTest ++ , která obsahuje věci z CPPUnitLite2 a některé další rámce.

Společnost Microsoft vydala WinUnit .

Také pokladny Catch nebo doctest

Odpovězeno 30/08/2008 v 14:51
zdroj uživatelem

hlasů
24

Existuje způsob, jak otestovat neřízený C ++ pomocí vestavěného testování rámec v rámci Visual Studio 2008 . Pokud vytvoříte C ++ testovací projekt, pomocí C ++ / CLI, pak můžete volat Nespravovaná DLL. Budete muset přejít podpory Common Language Runtime na / clr z / clr: bezpečné, pokud si chcete vyzkoušet kód, který byl napsán v Nespravovaná C ++.

Mám krok za krokem informace o mém blogu zde: http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/

Odpovězeno 05/05/2009 v 14:54
zdroj uživatelem

hlasů
9

Zde je přístup, mohu použít k testování modul URL IIS přepis na Microsoft (to je založené příkazového řádku, ale měl by fungovat pro VS příliš):

  1. Ujistěte se, že vaše hlavičkové soubory jsou spotřební pohybem zdrojový kód CPP soubory a v případě potřeby s použitím dopředu prohlášení.
  2. Kompilace kódu otestovat, jak knihovna (LIB)
  3. Vytvořte si svůj projekt UnitTest jako C ++ s podporou CLR.
  4. Zahrnout své hlavičkové soubory.
  5. Zahrnout své lib soubory.
  6. Přidejte odkaz na Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
  7. Použijte opravdu malou třídu pro vyhlášení své jednotce test a skok od podařilo C ++ / nativního kódu takhle (může mít překlepy):

Zde je příklad:

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

S tímto přístupem, lidé nemají učit příliš mnoho C ++ / CLI věci, vše skutečná zkouška bude provedena v jazyce C ++ nativní a třída TestShim bude použit na ‚publikovat‘ test na MSTest.exe (nebo aby byl viditelný ).

Pro přidání nové testy stačí deklarovat nový [TestMethod] void NewTest () {:: NewTest ();} způsob a novou void NewTest () nativní funkce. Žádná makra, žádné triky, straighforward.

Nyní je soubor Heade je volitelně, ale může být použita vystavit třídy Assert metody s C ++ nativní podpisy (např wchar_t * namísto Stirng ^), takže je možné si můžete udržovat ji v blízkosti C ++ a od C ++ / CLI :

Zde je příklad:

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

Odpovězeno 01/12/2009 v 22:56
zdroj uživatelem

hlasů
6

Osobně dávám přednost WinUnit protože mě nemá vyžadovat psát cokoliv kromě mých testů (I vybudovat DLL jako test, nikoliv exe). Jen jsem sestavení projektu, a poukazují WinUnit.exe mé testovací výstupní adresář a běží vše, co najde. Můžete si stáhnout projekt WinUnit zde . (MSDN nyní vyžaduje, abyste stáhli celou problematiku, nikoliv článek. WinUnit jsou zahrnuty do.)

Odpovězeno 15/09/2008 v 17:33
zdroj uživatelem

hlasů
4

Rámec je součástí VS9 je .NET, ale můžete psát testy v C ++ / CLI, tak dlouho, jak jste ochotni učit některé .NET ismů, měli byste být schopni testovat většinu jakýkoli C ++ kódu.

boost.test a googletest look být docela podobný, ale upraveny pro mírně odlišné účely. Oba tito mají binární komponenty, takže budete potřebovat další projekt v vaše řešení kompilovat a spouštět testy.

Rámec používáme je CxxTest , což je mnohem lehčí; je to pouze hlavičky a používá Perl (!) skript skřípání informace Test Suite z hlaviček (suites dědí z CxxTest :: základny, všechna jména vašich metody zkoušení začít s ‚testem‘). Je zřejmé, že to vyžaduje, aby se dostanete Perlu z jednoho zdroje nebo jiný , který přidává režie vašeho nastavení sestavení prostředí.

Odpovězeno 14/08/2008 v 15:17
zdroj uživatelem

hlasů
2

Nástroje, které zde byly zmíněny, jsou všechny nástroje příkazového řádku. Podíváte-li se pro více integrované řešení, se podívat na cfix studiu , což je Visual Studio AddIn pro C C ++ / testování jednotky. Je zcela podobné TestDriven.Net, ale pro (neřízený) C / C ++ .NET spíše než.

Odpovězeno 24/06/2009 v 07:21
zdroj uživatelem

hlasů
2

Používám UnitTest ++ .

V následujících letech jsem udělal tento post má zdroj přesunut ze SourceForge do github. Také příklad tutorial je nyní více agnostik - nemusí jít do jakékoliv konfigurace nebo projektu sestavou vůbec.

Pochybuji, že bude i nadále pracovat pro Visual Studio 6 jako soubory projektu jsou nyní vytvořena pomocí cmake. Pokud stále potřebujete starší verzi podporu můžete získat poslední dostupnou verzi pod SourceForge větve.

Odpovězeno 06/08/2008 v 09:28
zdroj uživatelem

hlasů
1

Trpěl jsem realizovat jednotkové testování nespravovaná aplikací C ++ v prostředí Windows pomocí Visual Studio. Tak se mi podařilo překonat a napsal příspěvek jako krok za krokem pokyny k neřízeným C testování aplikací jednotky ++. Doufám, že vám může pomoci.

Zkušební jednotka pro nespravované C ++ ve Visual Studiu

Odpovězeno 07/12/2012 v 09:32
zdroj uživatelem

hlasů
1

Líbí se mi CxxTest i ze stejných důvodů. Je to soubor záhlaví jen proto nutná žádná propojení. Nejste uvízl s Perlem jako je Python běžec stejně. I bude přezkoumávat knihovnu google brzy. Boost věc táhne příliš mnoho jiného zavazadla.

Odpovězeno 27/08/2008 v 19:15
zdroj uživatelem

hlasů
1

Jednotka tester pro Visual Studio 2008 je určen pouze pro kód .NET, pokud vím.

Použil jsem CppUnit na Visual Studio 2005 a zjistil, že je docela dobrý.

Pokud si dobře vzpomínám, nastavení bylo relativně bezbolestný. Jen se ujistěte, že ve svém testování předpokládá, že linker (spojovací → Input → Další závislostí) obsahuje cppunitd.lib.

Potom, #include <cppunit/extensions/HelperMacros.h>v záhlaví.

Potom můžete postupovat podle kroků v http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html dostat své testovací třídu práci.

Odpovězeno 19/08/2008 v 18:01
zdroj uživatelem

hlasů
1

Nejsem si 100% jistý VS2008, ale vím, že rámcová Unit Testing, že Microsoft zasílány v VS2005 jako součást svého týmu Suite byla jen pro .NET, ne C ++

Použil jsem CppUnit také, a to bylo v pořádku. Podobně jako NUnit / JUnit / tak dále.

Pokud jste používali podporu, ale také knihovnu testovací přístroj

Kluci za boost nějaké vážné kódování kotlety, takže bych řekl, jejich rámec by měl být dost dobrý, ale to nemusí být nejvíce uživatelsky přívětivý :-)

Odpovězeno 12/08/2008 v 00:45
zdroj uživatelem

hlasů
1

Použil jsem CppUnit s VS2005 a Eclipse. Wiki je velmi náročná (obzvláště pokud jste obeznámeni s JUnit).

Odpovězeno 12/08/2008 v 00:13
zdroj uživatelem

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