2013年1月1日火曜日

Windows で eclipse ~CUTE入門編~

続き。
Windows で eclipse ~CUTEインストール編~

早速、CUTEを使ってみる。




CUTEのヘルプを参照しながら、プロジェクトを作成する。
CUTEをインストール後、下記操作でCUTEのヘルプが表示される。

[メニュー] > [ヘルプ] > [ようこそ] > [Cute C++ Unit Testing Easier] をクリック。




1.CUTEプロジェクトの作成

先ずは、プロジェクトを作成してみる。


  • 画面右上の「パースペクティブを開く」アイコンをクリックし、「パースペクティブを開く」ダイヤログを表示。
  • 「パースペクティブを開く」ダイヤログから「C/C++」をクリック。




  • [ファイル] > [新規] > [C++プロジェクト] を選択




  • [プロジェクトタイプ] > [CUTE Project] を選択
  • [ツールチェイン] > [MinGW GCC] を選択
  • [プロジェクト名] > [CUTE_TEST] 入力
  • [次へ] をクリック



  • [完了] をクリック。



  • プロジェクトが作成される。




  • [CUTE_TEST]右クリック > [プロパティ] > [C/C++ビルド] > [設定] > [GCC C++ Compiler] > [インクルード]を選択
  • [インクルードパス] に [Boost]のパスを追加する
  • [OK]をクリック




2.ビルド&実行

  • [Ctrl+B] を押下。
  • コンソールに、ビルド結果が表示される。




  • [Ctrl+F11] を押下。
  • コンソールに実行結果が表示される。



  • 「CUTE Test Result」を参照すると、実行結果が表示される。


この結果は、「thisIsATest」でテストが失敗したことを意味している。



3.プログラムの修正

という訳で、プログラムを修正し、テストを成功させてみる。
先ずは、「Test.cpp」を読むことから始める。

01: #include "cute.h"
02: #include "ide_listener.h"
03: #include "cute_runner.h"
04: void thisIsATest() {
05:     ASSERTM("start writing tests", false); // ★ エラー発生箇所
06: }
07: void runSuite(){
08:     cute::suite s;
09:     //TODO add your test here
10:     s.push_back(CUTE(thisIsATest));
11:     cute::ide_listener lis;
12:     cute::makeRunner(lis)(s, "The Suite");
13:}
14:int main(){
15:    runSuite();
16:    return 0;
17:}


このプログラムは、下記の順に実行される。

    (1) 14: int main( )
    (2) 07: void runSuite( )

    (3) 04: void thisIsATest( )
で、エラーが発生しているのは、[thisIsATest( )]の、05行目 [ASSERTM("start writing tests", false);]。

ちなみに、[CUTE Test Results]の [thisIsATest( )]をダブルクリックすると、エラー発生箇所が表示される。

この [ASSERTM( )] は、実行結果が正しいかチェックするためのマクロである。


    <<書式>>
    • ASSERTM( msg, cond )
      • msg : テスト失敗時に表示されるメッセージ
      • cond : テストの実行結果 trueの場合テスト成功、falseの場合テスト失敗


で、cond に false が書かれているため、必ずテストが失敗する。
テストを成功させるためには、5行目を下記の通り修正する。

▼修正前 : ASSERTM("start writing tests", false);
▼修正後 : ASSERTM("start writing tests", true);



  • 5行目を修正する
  • [Ctrl+B]でビルドする
  • [Ctrl+F11]で実行する


実行結果が成功し、グリーンバーが表示される。



4.テストケースの追加(関数編)

続いて、テストケースを増やす方法を紹介する。
テストケースは、「関数型」と「クラス型」の2種類があるが、先ずは「関数型」から紹介する。

  • [newTest( )] 関数を追加する。
  • [runTest( )] 関数に、 [s.push_back(CUTE(newTest))] を追加する。
  • ビルド( [Ctrl+B] )、 実行 ([Ctrl+F11] ) を実行する。



5.テストケースの追加(クラス編)

続いて、「クラス型」の紹介。
クラス型の場合、CUTEはデフォルトでメンバ関数 「void operator() ()」 をコールする仕様との事。

  • [class testCaseClass] を追加する(下記参照)。
  • [runTest( )] 関数に、 [s.push_back(testCaseClass());] を追加する。
  • ビルド( [Ctrl+B] )、 実行 ([Ctrl+F11] ) を実行する。

class testCaseClass{
public:
void operator() () {
ASSERTM("testCaseClass", true);
}
};








もう1つ。
デフォルトの [void operator() ()] 以外の関数を実行したい場合、 [cute::suite] に登録する際、 [CUTE_SMEMFUN] を指定する。

  • [class testCaseClass2] を追加する(下記参照)。
  • [runTest( )] 関数に、 [s.push_back(CUTE_SMEMFUN(testCaseClass,testFunc));] を追加する。
  • ビルド( [Ctrl+B] )、 実行 ([Ctrl+F11] ) を実行する。

class testCaseClass{
public:
void testFunc() { ASSERTM("testCaseClass", true);
}
};








    以上で、一通りCUTEの使用方法の説明になる。
    次回、実践的な活用方法を記述する。

    0 件のコメント:

    コメントを投稿