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.
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.
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.
Použil jsem CppUnit s VS2005 a Eclipse. Wiki je velmi náročná (obzvláště pokud jste obeznámeni s JUnit).
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ý :-)
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í.
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.
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.
Tato stránka může pomoci, přezkoumává nemálo C ++ jednotka testovací rámců:
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 .
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.)
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/
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ž.
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š):
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
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.