FrontPage  Index  Search  Changes  Login

CppUnit

VisualC++で利用する

準備

  • 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++編にある

テストクラスの雛型

#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;
}
Last modified:2004/05/30 10:52:46
Keyword(s):
References:[SideMenu] [CppUnit] [] [掲示板]