TDDBC横浜2nd/環境構築(C++)

Visual C++ で PCUnit な環境

必要なもの

Visual C++ Express
IDE です
PCUnit
cunit like な libc 非依存のテスティングフレームワークです
Ruby
コード生成スクリプトを使うために必要です

はじめに

この文書は Visual C++ ExpressPCUnit を使うための環境構築の手順です。 PCUnit 付属のコード生成スクリプトを使えるようにすることが目的です。 空っぽの状態から始める手がかりにしてください。

1. プロジェクトを作りましょう

最低でも3つにしたほうがいいと思います。

  • PCUnit
    • スタティックライブラリ
    • github で公開されている PCUnit のリソースを置いてしまいましょう
    • ソースフォルダには .c なファイルを、ヘッダーフォルダには .h なファイルを入れてください
  • SampleMain?
    • スタティックライブラリ
    • 本体コードをここに入れます
  • SampleTest? (スタートアッププロジェクト)
    • コンソールアプリケーション
    • テストコードをここに入れます

ソリューションディレクトリからの構成は次のようになります。

C:\USERS\YUJIORAMA\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\SAMPLE
├───PCUnit
│   └───PCUnit
├───SampleMain
└───SampleTest

2. プロジェクトを設定しましょう

テストを実行することが主目的なので、SampleTest? についていろいろと設定をしていきます。

2.1 構成プロパティ > C/C++ > 全般

テストプロジェクトから PCUnit とメインプロジェクトのヘッダーファイルを参照できるようにすることが目的です。

今回はソースコードファイルとヘッダーファイルでディレクトリを分けない想定のため、プロジェクトのルートディレクトリを追加します。

設定は「追加のインクルードディレクトリ」に追加します。 初期値は空欄です。

$(SolutionDir)/PCUnit
$(SolutionDir)/SampleMain

2.2 構成プロパティ > リンカー > 入力

テスト実行ファイルに、PCUnit とメインプロジェクトの生成物をリンクできるようにすることが目的です。

今回は出力先をデフォルトのままにする想定で、それぞれのライブラリファイルを追加します。 設定は「追加の依存ファイル」にセミコロン区切りで追加します。 初期値にいろいろ入っているので、消してしまったらプロジェクト作りなおしたほうが早いと思います。

$(SolutionDir)/$(ConfigurationName)/PCUnit.lib
$(SolutionDir)/$(ConfigurationName)/SampleMain.lib

2.3 構成プロパティ > ビルドイベント > ビルド前イベント

テストプロジェクトをビルドする前に、コード生成スクリプトを実行してテストスイートを登録できるようにすることが目的です。

ディレクトリの指定は完全パスで行います。 半角スペースが引数の区切りになってしまうため、クォートが必要です. (Rubyのインストール先はそれぞれの環境に合わせてください)

d:\dev\ruby193\bin\ruby '$(SolutionDir)/PCUnit/PCUnit/pcunit_register.rb' -d '$(ProjectDir)'

2.4 プロジェクトの依存関係

ソリューションエクスプローラーで、テストプロジェクトの依存先に PCUnit とメインプロジェクトを追加してください。

3. テストコードの生成

コマンドプロンプトを起動して、ソリューションディレクトリに移動します。

cd c:\Users\yujoirama\Documents\Visual Studio 2010\Projects\Sample

PCUnit のひな形生成スクリプトを実行します。 (Rubyのインストール先はそれぞれの環境に合わせてください)

d:\dev\ruby193\bin\ruby PCUnit\PCUnit\pcunit_template.rb SampleSuite -d SampleTest -p -m

SampleTest? の下に次のファイルが生成されるので、IDE からテストプロジェクトのソースフォルダに追加してください。

main.cpp
SampleSuite.cpp

4. ビルド

IDE で "F7" を押すか、デバッグメニューの「ソリューションのビルド」を実行してください。 出力ウインドウに次のような結果が表示されます。

1>------ ビルド開始: プロジェクト: SampleMain, 構成: Debug Win32 ------
2>------ ビルド開始: プロジェクト: SampleTest, 構成: Debug Win32 ------
2>  SampleSuite.cpp
2>  main.cpp
2>  コードを生成中...
2>  SampleTest.vcxproj -> c:\users\yujoirama\documents\visual studio 2010\Projects\Sample\Debug\SampleTest.exe
========== ビルド: 2 正常終了、0 失敗、1 更新不要、0 スキップ ==========

5. テストプログラムの実行

IDE で "Control + F5" を押してください。 (デバッグメニューから「デバッグ実行」を実行するとすぐにウインドウが閉じてしまいます)

コマンドプロンプトが開いて、次のように表示された状態になります。 何かキーを押すとウインドウは閉じます。

Suite: SampleSuite

Test: test_TODO
 c:\users\yujoirama\documents\visual studio 2010\projects\sample\sampletest\samp
lesuite.cpp(26) : PCU_FAIL
  TODO

1 Tests, 1 Failures, 0 Skipped

Press any key to continue . . .

以降は、テストプロジェクトに追加したソースコードファイルを編集していけば、 ビルド時にテストスイートの登録が行われるようになります。

6. 開発のサイクル

以降は次のようなサイクルでコードを書いていく事になるでしょう。

6.1 すでにあるテストスイートを使う場合

+ テスト関数を書く + ビルド、実行する

6.2 テストスイートを追加する場合

+ コマンドプロンプトから pcunit_template.rb を実行する + 生成されたテストコードファイルをテストプロジェクトに追加する + テスト関数を書く + ビルド、実行する

Visual C++ で googletest な環境

必要なもの

Visual C++ Express
IDE です
googletest
C++ のための xUnit フレームワークです

はじめに

この文書は Visual C++ Expressgoogletest を使うための環境構築の手順です。 空っぽの状態から始める手がかりにしてください。

1. プロジェクトを作りましょう

最低でも3つにしたほうがいいと思います。

  • gtest-md
    • googletest の本体です
    • 配布されてるアーカイブの中にあるやつを使います
      • 手順は後述します
  • SampleMain?
    • スタティックライブラリ
    • 本体コードをここに入れます
  • SampleTest? (スタートアッププロジェクト)
    • コンソールアプリケーション
    • テストコードをここに入れます

ソリューションディレクトリからの構成は次のようになります。

C:\USERS\YUJIORAMA\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\SAMPLE
├───SampleMain
└───SampleTest

1.1. googletest の導入

  • ダウンロードページから最新版(この時は1.6.0)を取得します
  • 適当なディレクトリに展開します
  • 重要(?):展開したフォルダのプロパティから、「読み取り専用」のチェックを外します

ここからは Visual C++ を操作します。

  • Visual C++ でさっき作ったソリューションを開きます
  • ソリューションエクスプローラーでソリューションを右クリックし、「追加」から「既存のプロジェクト」を選択します
  • ファイルダイアログから gtest-md.vcproj を選択します
    • 場所は 展開した googletest のフォルダ\msvc です
  • 変換ウィザードに従いプロジェクト形式を変換してインポートします

1.2. プロジェクトの設定と確認

次のようにそれぞれのプロジェクトを設定します。

  • gtest-md
    • 「全般」「文字セット」→ Unicode 文字セットを使用するに変更
  • SampleMain?
    • 特になし
  • SampleTest?
    • スタートアッププロジェクトに設定
    • 「C/C++」「全般」「追加のインクルードディレクトリ」→展開した googletest のフォルダ\includeを追加
    • 「リンカー」「入力」「追加の依存ファイル」→展開した googletest のフォルダ\msvc\$(SolutionName?)\$(ConfigurationName?)\gtestd.libを追加

SampleTest? プロジェクトに SampleTest?.cpp があるなら、次の内容で置き換えます。 (なければ main.cpp とでもして追加します)

#include "stdafx.h"
#include "gtest/gtest.h"

int _tmain(int argc, _TCHAR* argv[])
{
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

IDE で "Control + F5" を押してください。 (デバッグメニューから「デバッグ実行」を実行するとすぐにウインドウが閉じてしまいます)

コマンドプロンプトが開いて、次のように表示された状態になります。 何かキーを押すとウインドウは閉じます。

[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (0 ms total)
[  PASSED  ] 0 tests.
続行するには何かキーを押してください . . .

2. googltest の使い方

日本語訳ドキュメントがあるので参照してください。

Last modified:2012/08/31 01:23:09
Keyword(s):
References:[TDDBC横浜 Second Season]