環境
Windows7 64bit版
Microsoft Visual Studio Professional 2012
テストの作成
UnitTestをインクルード/リンクしてdllを作ればやり方はなんでもよい。
- 「Win32コンソールアプリケーション」のプロジェクトを新規作成し、DLLを選択する。
-
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\UnitTest\include 以下のファイルをコピーしてプロジェクトへ追加。
- CppUnitTest.h
- CppUnitTestAssert.h
- CppUnitTestCommon.h
- CppUnitTestException.h
- CppUnitTestLogger.h
- Source.cppと同じ場所にコピーすればインクルードパスの設定は必要ない。
-
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\UnitTest\lib 以下のファイルをコピーしてプロジェクトへ追加。
- amd64/Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib
- arm/Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib
- Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib
- 「追加のライブラリディレクトリ」へ追加したディレクトリへのパスを追加。
- 例えば、Source.cppと同じ場所に「lib」という名前のディレクトリを作成しそこへコピーした場合は「lib」と設定。
- Source.cppを以下のように修正(CppUnitTest.hのUSAGE EXAMPLEとほぼ同一)してビルド。
Source.cpp
# include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
BEGIN_TEST_MODULE_ATTRIBUTE()
TEST_MODULE_ATTRIBUTE(L"Date", L"2010/6/12")
END_TEST_MODULE_ATTRIBUTE()
TEST_MODULE_INITIALIZE(ModuleInitialize)
{
Logger::WriteMessage("In Module Initialize");
}
TEST_MODULE_CLEANUP(ModuleCleanup)
{
Logger::WriteMessage("In Module Cleanup");
}
TEST_CLASS(Class1)
{
public:
Class1()
{
Logger::WriteMessage("In Class1");
}
~Class1()
{
Logger::WriteMessage("In ~Class1");
}
TEST_CLASS_INITIALIZE(ClassInitialize)
{
Logger::WriteMessage("In Class Initialize");
}
TEST_CLASS_CLEANUP(ClassCleanup)
{
Logger::WriteMessage("In Class Cleanup");
}
BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
TEST_OWNER(L"OwnerName")
TEST_PRIORITY(1)
END_TEST_METHOD_ATTRIBUTE()
TEST_METHOD(Method1)
{
Logger::WriteMessage("In Method1");
Assert::AreEqual(0, 0);
}
TEST_METHOD(Method2)
{
// 必ず失敗
Assert::Fail(L"Fail");
}
};
テストの実行
VisualStudioのメニューから「テスト」>「ウィンドウ」>「テストエクスプローラー」を選択すると、
以下のようなウィンドウが表示される。
「すべて実行」を選択すると、Method1とMethod2のテストが実行される。
結果は以下のように表示される。
64ビットテストを32ビットプロセスで実行することはできません。
64ビットのアプリをテストした際に上記のように警告が出てしまう場合は、
メニューの「テスト」>「テスト設定」>「既定のプロセッサアーキテクチャ」>「x64」
を選択すれば実行可能になる。
テストの実行(コンソール)
バッチファイルを実行して環境変数を設定し、vstest.console.exe を実行する。
x64の場合、 /Platform:x64 と指定する。
> "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64\vcvars64.bat"
> vstest.console.exe /Platform:x86 /InIsolation ConsoleApplication1.dll
- /Platform
- プラットフォームの種類。 x64/x86/ARM がある。
- /InIsolation
- 分離プロセスでテスト。警告が出ていたので指定。
- ConsolaApplication1.dll
- テスト対象。
コンソールでのテスト実行結果
テストが成功するようにするには、
Source.cppの61行目をコメントアウトし、再度ビルド&テスト。
Source.cpp
TEST_METHOD(Method2)
{
// 必ず失敗
//Assert::Fail(L"Fail");
}