У меня возникли проблемы , выяснить , как получить основы тестирования настроить и использовать в Visual Studio 2008 для C++
предположительно с встроенным блоком тестирования пакета.
Любые ссылки или учебные пособия будут оценены.
У меня возникли проблемы , выяснить , как получить основы тестирования настроить и использовать в Visual Studio 2008 для C++
предположительно с встроенным блоком тестирования пакета.
Любые ссылки или учебные пособия будут оценены.
Ответы:
Эта страница может помочь, она рассматривает довольно много фреймворков модульного тестирования C ++:
Проверьте CPPUnitLite или CPPUnitLite2 .
CPPUnitLite был создан Майклом Фезерсом , который изначально портировал JUnit из Java на C ++ как CPPUnit (CPPUnit пытается имитировать модель разработки JUnit, но в C ++ отсутствуют функции Java [например, отражение], чтобы упростить его использование).
CPPUnitLite пытается создать настоящую среду тестирования в стиле C ++, а не платформу Java, перенесенную на C ++. (Я перефразирую книгу Фезера « Эффективная работа с устаревшим кодом» ). CPPUnitLite2 кажется еще одним переписанным с большим количеством функций и исправлений ошибок.
Я также только что наткнулся на UnitTest ++, который включает в себя материал из CPPUnitLite2 и некоторых других фреймворков.
Microsoft выпустила WinUnit .
Также проверьте Catch или Doctest
источник
Есть способ протестировать неуправляемый C ++ с помощью встроенной среды тестирования в Visual Studio 2008 . Если вы создаете тестовый проект C ++ с помощью C ++ / CLI, вы можете затем выполнять вызовы неуправляемой библиотеки DLL. Вам придется переключить поддержку Common Language Runtime с / clr: safe на / clr, если вы хотите протестировать код, написанный на неуправляемом C ++.
У меня есть пошаговая информация в моем блоге здесь: http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/
источник
Вот подход, который я использую для тестирования модуля IIS URL Rewrite в Microsoft (он основан на командной строке, но должен работать и для VS):
Вот пример:
// 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(); } };
При таком подходе людям не нужно изучать слишком много материала C ++ / CLI, весь реальный тест будет выполняться на нативном языке C ++, а класс TestShim будет использоваться для `` публикации '' теста в MSTest.exe (или сделать его видимым). ).
Для добавления новых тестов вы просто объявляете новый метод [TestMethod] void NewTest () {:: NewTest ();} и новую нативную функцию void NewTest (). Никаких макросов, никаких уловок, все понятно.
Теперь файл заголовка является необязательным, но его можно использовать для предоставления методов класса Assert с собственными сигнатурами C ++ (например, wchar_t * вместо Stirng ^), поэтому вы можете держать его близко к C ++ и вдали от C ++ / CLI. :
Вот пример:
// 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
источник
Лично я предпочитаю WinUnit, так как он не требует от меня ничего писать, кроме моих тестов (я создаю .dll в качестве теста, а не exe). Я просто создаю проект, указываю WinUnit.exe в свой тестовый выходной каталог, и он запускает все, что находит. Вы можете скачать проект WinUnit здесь . (MSDN теперь требует, чтобы вы загрузили всю проблему, а не статью. WinUnit включен в нее.)
источник
Фреймворк, включенный в VS9, - это .NET, но вы можете писать тесты на C ++ / CLI, так что, если вам комфортно изучать некоторые .NET-измы, вы сможете тестировать практически любой код C ++.
boost.test и googletest выглядят довольно похоже, но адаптированы для немного разных целей. Оба они имеют двоичный компонент, поэтому вам понадобится дополнительный проект в вашем решении для компиляции и запуска тестов.
Мы используем фреймворк CxxTest , который намного легче; это только заголовки и использует сценарий Perl (!) для очистки информации о наборе тестов из ваших заголовков (наборы наследуются от CxxTest :: Base, имена всех ваших методов тестирования начинаются с «test»). Очевидно, для этого необходимо получить Perl из того или иного источника , что увеличивает накладные расходы на настройку среды сборки.
источник
Я использую UnitTest ++ .
За годы, прошедшие с тех пор, как я написал этот пост, исходный код переместился с SourceForge на github. Кроме того, пример учебного пособия теперь более агностический - вообще не входит в какую-либо конфигурацию или настроенный проект.
Я сомневаюсь, что он по-прежнему будет работать для Visual Studio 6, поскольку файлы проекта теперь создаются через CMake. Если вам все еще нужна поддержка более старой версии, вы можете получить последнюю доступную версию в ветке SourceForge .
источник
Все упомянутые здесь инструменты являются инструментами командной строки. Если вы ищете более интегрированное решение, обратите внимание на cfix studio , который представляет собой надстройку Visual Studio для модульного тестирования C / C ++. Он очень похож на TestDriven.Net, но для (неуправляемого) C / C ++, а не для .NET.
источник
Я использовал CppUnit с VS2005 и Eclipse. Вики написана очень тщательно (особенно если вы знакомы с JUnit).
источник
Я не уверен на 100% в VS2008, но я знаю, что фреймворк модульного тестирования, который Microsoft поставлял в VS2005 как часть своего Team Suite, был только для .NET, а не C ++
Я также использовал CppUnit, и все было хорошо. Во многом то же самое, что и NUnit / JUnit / и так далее.
Если вы использовали boost, у них также есть библиотека модульного тестирования
У ребят, стоящих за boost, есть серьезные проблемы с кодированием, поэтому я бы сказал, что их структура должна быть довольно хорошей, но она может быть не самой удобной для пользователя :-)
источник
CxxTest мне тоже нравится по тем же причинам. Это только файл заголовка, поэтому связывание не требуется. Вы не зацикливаетесь на Perl, так как есть также бегун Python. Я скоро буду просматривать библиотеку Google. Материал Boost втягивает слишком много другого багажа.
источник
Насколько мне известно, модульный тестер для Visual Studio 2008 предназначен только для кода .NET.
Я использовал CppUnit в Visual Studio 2005 и обнаружил, что он неплохой.
Насколько я помню, настройка прошла относительно безболезненно. Просто убедитесь, что в ваших тестовых проектах компоновщик (Linker → Input → Additional Dependencies) включает cppunitd.lib.
Потом
#include <cppunit/extensions/HelperMacros.h>
в шапке.Затем вы можете выполнить шаги, описанные в http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html, чтобы ваш тестовый класс заработал.
источник
Я мучился с реализацией модульного тестирования неуправляемого приложения C ++ в среде Windows с Visual Studio. Так что мне удалось преодолеть и написать пост в качестве пошагового руководства по модульному тестированию неуправляемых приложений C ++. Надеюсь, это поможет вам.
Модульный тест для неуправляемого C ++ в Visual Studio
источник