FrontPage  Index  Search  Changes  Login

niche programmer - CppUnit Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}
!在りか
[[CppUnitプロジェクトホームページ|http://sourceforge.net/projects/cppunit/]]

!VisualC++で利用する
!!準備
*[[CppUnitプロジェクトホームページ|http://sourceforge.net/projects/cppunit/]]よりCppUnitをダウンロードし適当なディレクトリで展開する。
*VisualC++のワークスペースに取り込む
**[ファイル]-[ワークスペースを開く]からCppUnitLibraires.dswを選択
*CppUnitを構築
**[プロジェクト]-[アクティブプロジェクトに設定]でTestPlugInRunnerを選択
**[ビルド]-[バッチビルド]を選択し[ビルド]実行
*設定する
**[ツール]-[オプション]で表示されるダイアログの[ディレクトリ]タブを選択する
**表示するディレクトリでインクルードファイルを選択し、CppUnitのincludeディレクトリを追加する
**表示するディレクトリでライブラリファイルを選択し、CppUnitのlibディレクトリを追加する
**表示するディレクトリでソースファイルを選択し、CppUnitのsrc\cppunitディレクトリを追加する

!!サンプルの実行
*[ファイル]-[ワークスペース]でCppUnitのexamplesにあるexamples.dswを開く
*[プロジェクト]-[アクティブプロジェクトに設定]でCppUnitTestAppを選択する
*[ビルド]-[バッチビルド]で表示されたダイアログで全てにチェックをつけ、ビルドを実行する
*[ビルド]-[実行CppUnitTestApp.ext]を選択して実行する

!!VisualC++でUnitTestしてみる
*[ファイル]-[新規作成]-[プロジェクト]で作成したいプロジェクトを選択する
*[プロジェクト]-[設定]-[C/C++]-[C++言語]のRTTIを有効にする
*[プロジェクト]-[設定]-[C/C++]-[コード生成]の[使用するランタイムライブラリ]でマルチスレッド(DLL)を選択する
*[プロジェクト]-[設定]-[リンク]-[インプット]の[オブジェクト/ライブラリモジュール]にcppunit.lib testrunner.lib(デバッグ用はcppunitd.lib testrunnerd.lib)と入力する
もっとすてきな情報が、[[子河童1.6とCppUnit-1.9.4を使った開発、VC++編|http://www.shibu.jp/cppunit/tutorial/]]にある

!!テストクラスの雛型
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/ui/text/TestRunner.h>
#include <string>
  
#include "テストクラス.h"
class テストクラスTest : public CppUnit::TestFixture {
     CPPUNIT_TEST_SUITE( テストクラスTest );
     CPPUNIT_TEST( テストメソッド );
     CPPUNIT_TEST_SUITE_END();
public:
     テストクラスTest(){}

     void setUp()
     {
         target = new テストクラス;
     }
    
     void tearDown()
     {
         delete target;
     }

     void テストメソッド()
     {
         CPPUNIT_ASSERT( false );
     }
private:
     テストクラス *target;
}


!!GUI版TestRunner
GUIでテストを実行する場合、TestRunnerとして既存のプロジェクトにMFC AppWizard(exe)を追加する。その際、ダイアログベースのアプリとして追加し、できたcppのInitInstanceを以下のように書き換える。
#include <cppunit/ui/mfc/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>

BOOL CTestApp::InitInstance()
{
     AfxEnableControlContainer();
     Enable3dControls();
     CppUnit::MfcUi::TestRunner runner;
     runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest());
     runner.run();
     return FALSE;
}

!!CUI版TestRunner
#include <cppunit/ui/text/TestRunner.h>
#include <string>
  
#include "テストクラス.h"

int main()
{
     CppUnit::TestSuite *suite = テストクラスTest::suite();
     CppUnit::TextUi::TestRunner runner;
     runner.addTest(suite);
     bool retcode = runner.run();
     return retcode;
}