おそらく組み込みの単体テストスイートを使用して、Visual Studio 2008でテストフレームワークをセットアップして使用できるようにする方法を理解するのに苦労C++
しています。
リンクやチュートリアルをいただければ幸いです。
おそらく組み込みの単体テストスイートを使用して、Visual Studio 2008でテストフレームワークをセットアップして使用できるようにする方法を理解するのに苦労C++
しています。
リンクやチュートリアルをいただければ幸いです。
回答:
このページは役に立つかもしれません、それはかなりの数のC ++ユニットテストフレームワークをレビューします:
CPPUnitLiteまたはCPPUnitLite2を確認してください。
CPPUnitLiteは、JavaのJUnitをC ++にCPPUnitとして移植したMichael Feathersによって作成されました(CPPUnitはJUnitの開発モデルを模倣しようとしますが、C ++にはJavaの機能(反射など)がないため使いやすくなっています)。
CPPUnitLiteは、C ++に移植されたJavaではなく、真のC ++スタイルのテストフレームワークを作成しようとします。(私はフェザーのレガシーコードを使った効果的な作業から言い換えています)。CPPUnitLite2は、より多くの機能とバグ修正を備えた、別の書き直しのようです。
また、CPPUnitLite2や他のいくつかのフレームワークからのものを含むUnitTest ++を偶然見つけました。
Visual Studio 2008内の組み込みのテストフレームワークを使用して、アンマネージC ++をテストする方法があります。C ++ / CLIを使用してC ++テストプロジェクトを作成すると、アンマネージDLLを呼び出すことができます。アンマネージC ++で記述されたコードをテストする場合は、共通言語ランタイムのサポートを/ clr:safeから/ clrに切り替える必要があります。
ここに私のブログのステップバイステップの詳細があります:http : //msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/
MicrosoftでIIS URL書き換えモジュールをテストするために使用する方法は次のとおりです(コマンドラインベースですが、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()ネイティブ関数を宣言するだけです。マクロも、トリックも、率直なものもありません。
現在、headeファイルはオプションですが、C ++ネイティブシグネチャ(Stirng ^ではなくwchar_t *など)でAssertクラスのメソッドを公開するために使用できるため、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ではなく.dllを作成します)。プロジェクトをビルドして、WinUnit.exeにテスト出力ディレクトリを指定すると、見つかったすべてのものが実行されます。WinUnitプロジェクトはこちらからダウンロードできます。(MSDNでは、記事ではなく、問題全体をダウンロードする必要があります。WinUnitが含まれています。)
VS9に含まれているフレームワークは .NETですが、C ++ / CLIでテストを作成できます。.NETのISMを習得できる限り、ほとんどすべてのC ++コードをテストできます。
boost.test とgoogletestは かなり似ているように見えますが、少し異なる用途に適応しています。これらの両方にバイナリコンポーネントがあるため、テストをコンパイルして実行するには、ソリューションに追加のプロジェクトが必要です。
私たちが使用するフレームワークはCxxTestで、はるかに軽量です。これはヘッダーのみであり、Perl(!)スクリプトを使用してヘッダーからテストスイート情報を取得します(スイートはCxxTest :: Baseを継承し、すべてのテストメソッド名は「test」で始まります)。明らかに、これはあなたからPerlを入手する必要があり一つのソースまたは別のビルド環境のセットアップにオーバーヘッドが追加されます。
UnitTest ++を使用しています。
私がこの記事を書いてから数年で、ソースはSourceForgeからgithubに移動しました。また、サンプルチュートリアルはより不可知論的です。設定やプロジェクトの設定は一切行われません。
プロジェクトファイルがCMakeを介して作成されるようになったので、Visual Studio 6でも引き続き機能するとは思いません。それでも古いバージョンのサポートが必要な場合は、SourceForgeブランチで最新の利用可能なバージョンを取得できます。
ここで言及したツールはすべてコマンドラインツールです。より統合されたソリューションを探す場合は、C / C ++ユニットテスト用のVisual Studioアドインであるcfix studioをご覧ください。これはTestDriven.Netとよく似ていますが、.NETではなく(アンマネージド)C / C ++用です。
VS2008については100%確実ではありませんが、マイクロソフトがVS2005でチームスイートの一部として出荷した単体テストフレームワークは、C ++ではなく.NETのみでした。
CppUnitも使用しましたが、問題ありませんでした。NUnit / JUnit /などとほとんど同じです。
ブーストを使用したことがある場合は、ユニットテストライブラリもあります。
ブーストの背後にいる人たちはいくつかの深刻なコーディングチョップを持っているので、彼らのフレームワークはかなり良いはずですが、それは最もユーザーフレンドリーではないかもしれません:-)
Visual Studio 2008の単体テスターは、私の知る限り.NETコード専用です。
Visual Studio 2005でCppUnitを使用しましたが、かなり良いことがわかりました。
私の記憶では、セットアップは比較的簡単でした。テストプロジェクトでリンカー(リンカー→入力→追加の依存関係)にcppunitd.libが含まれていることを確認してください。
次に、#include <cppunit/extensions/HelperMacros.h>
ヘッダーで。
その後、http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.htmlの手順に従って、テストクラスを機能させることができます。
Visual Studioを使用するWindows環境で、アンマネージC ++アプリケーションの単体テストを実装するのに苦労していました。そのため、アンマネージドC ++アプリケーションの単体テストへの段階的なガイダンスとして、なんとか乗り越えて投稿しました。お役に立てれば幸いです。