nDiki : CppUnit

CppUnit

C++単体テストフレームワーク。 組み込み用などのプログラムでも使えるように修正された CppUnit-x というのもある。

支援ツールとして河童がある。

また CppUnit 1.5 から派生した C++単体テストフレームワークとして QtUnit がある。

以下 1.9.10 の頃の話。

Microsoft Visual C++ 6.0 で CppUnit を使った時のメモ

インストール (CppUnit 1.9.10)

  1. 適当なディレクトリで cppunit-1.9.10.tar.gz を展開する
  2. ワークスペース cppunit-1.9.10/src/CppUnitLibraries.dsw を Visual C++ 6.0 で開く
  3. [ビルド]->[バッチビルド...] メニューを選択。全てのプロジェクトを選択し、ビルド
    1. 依存関係とビルドの順番の問題で一度でビルドできない場合は何度か繰り返す
  4. [ツール]->[カスタマイズ] メニューを選択。CppUnit Testrunner Developer Studio Add-in を [アドインおよびマクロファイル] に追加
    • [参照]ボタンを押して、cppunit-1.9.10/lib/TestRunnerDSPlugIn.dllを追加する

スタティックリンクランタイムライブラリ用について

CppUnit のプロジェクト設定では、「使用するランタイムライブラリ」がDLLのもののみなので

等が欲しい場合は、自分で設定を修正してビルドする必要がある(CppUnit 自身のスタティックリンク/ダイナミックリンクではなくランタイムライブラリの話)

テストプログラム作成環境の整備

  1. Visual C++ 6.0 で [ツール]->[オプション] を選択。[ディレクトリ]/インクルードファイルに cppunit-1.9.10/include の絶対パスを指定
  2. 同 ライブラリファイルに cppunit-1.9.10/lib の絶対パスを指定

test fixture を書く

こんな感じ。

 #include "cppunit/TestFixture.h"
 #include "cppunit/TestSuite.h"
 #include "cppunit/TestCaller.h"
 #include "cppunit/extensions/HelperMacros.h"

 class TestClassTest : public CppUnit::TestFixture {
   CPPUNIT_TEST_SUITE(TestClassTest);
   CPPUNIT_TEST(testAAA);
   CPPUNIT_TEST_SUITE_END();
 public:

   void testAAA() {
   }
 };

assertion を書く

cppunit/TestAssert.h で定義されている CPPUNIT_ASSERT マクロファミリを使うのが便利。

 CPPUNIT_ASSERT(condition)
 CPPUNIT_ASSERT_MESSAGE(message, condition)
 CPPUNIT_FAIL(message)
 CPPUNIT_ASSERT_EQUAL(expected, actual)
 CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual)
 CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, delta)

http://cppunit.sourceforge.net/ の Modules -> Making assertions 参照。

スポンサード リンク

2009年3月13日 (金)

久しぶりの C++GNU Automake + CppUnit

ちょっとした文字列構文解析関係の C++ コードを書き始めた。 C++ は随分触ってなかったので「C++ で書き直すのを考慮してそれっぽく Perl で書くから後で書き直して」と最初は言っておいたのだが、それもあんまりだと思って C++ で書くことにした。

Debian GNU/Linux 上で書くので GNU Automake + CppUnit で。 「Perl + Test::Harness」や「Java + Eclipse + JUnit」や「C# + Visual C# + NUnit」などと比べるとやっぱりタルいな。

1つメソッド書くのに、

  • テストメソッドの宣言
  • テストメソッドの登録 (CPPUNIT_TEST())
  • テストメソッドの実装
  • メソッドの宣言
  • メソッドの実装

と 4ファイル5カ所編集しなければならない。 クラス追加時には Makefile.am にヘッダファイルとソースファイルをテストケース用のと含めて4ファイル書き加える必要があるし。

あー面倒。

でも C++ で書き始めると楽しいんだよなあ。

スポンサード リンク

今日のさえずり - 会議室から「サクラ大戦」とか

naney:3350803825

2009年03月12日

2009年03月13日

[ 3月13日全て ]

2009年3月19日 (木)

今日のさえずり - 「コメ兵」を「ベイヘイ」っていうな

naney:3362478711

2009年03月17日

2009年03月18日

  • 07:07 台所のブレーカー落ちた。ティファールの電気ケトルと電子レンジ(トースター)同時はやはり駄目だった。 [mb]
  • 11:58 Evernote のタグって階層化できるのか。タグ自体はグローバルで、表示上畳める以外の機能はないみたいだけれど。 *P3
  • 15:34 Doxygen 用のコメントちょこちょこっと書いた。 *P3
  • 19:13 鳥取は黄砂がすごいらしい(本社情報)。 *P3
  • 21:26 定額給付金申請書届いた。 [mb]

2009年03月19日

[ 3月19日全て ]

2010年1月6日 (水)

今日のさえずり - 毎年今ごろになると注連飾りをいつ外すかググる

2010年01月06日

  • 09:47 今日今年最初の燃やすごみの日だったが、寝袋捨てるの忘れてた。
  • 11:58 Visual Studio 2005単体テストを使ってみようかと思ったけれど、対象が C++ アンマネージコードでもテストプロジェクトはマネージコードになるのか。いばらの道になりそうなので今まで通り CppUnit にしよう。 #cpp #cplusplus
  • 12:15 なか卯でテイクアウトしようと思ったが今年も店頭のオバチャンの要領がよくないので、店内で食べてきちゃった。
  • 12:27 MovaTwitter にリストのユーザ登録/削除機能がついた。これ嬉しいな。移動中に「後で PC で……」と先送りしなくてすむ。 #movatwi
  • 15:21 がんすけ2、サブ項目20までとな。
  • 15:49 PowerPoint の画面をローカルとリモートで共有したい(操作はローカルのみで良い)というリクエストをもらったんだけれど、良いソリューションあるかな。使ったことないけど Skype の画面共有がお手軽?
  • 16:12 @bash0C7 情報ありがとうございます。PowerPoint の機能確認してみます。
  • 16:39 PowerPoint 2000 の[オンライン グループ作業]は NetMeeting を使うのでディレクトリサーバが必要。[オンライン ブロードキャスト] は共有フォルダにおいて定時に Web ブラウザでアクセスしてもらう。Outlook の会議出席依頼がどうの。
  • 16:40 PowerPoint 2007 ではどちらも無くなっているっぽい。
  • 16:40 PowerPoint の機能だとちょっと気軽にはリモートと画面共有できなさそげ。
  • 17:02 Skype の画面共有してみた。画面更新速度はそこそこだけれどやっぱりこれが手軽か。それぞれ全画面表示にしてもモニタの解像度を気にしなくていいし。音声通話も必ず開始されるのでチャット + 画面共有には向かないけれど、今回は音声通話も必要みたいだからちょうどいいな。
  • 17:03 @yamakiyo 社内会議だから Ustream.TV はマズイっす。
  • 17:34 腹減ったので肉まん。
  • 20:41 Google ドキュメントでフォーム作ってみた。楽しい。
  • 21:08 RT @kaorisasaki: 私という人が、一番いい状態で、周囲に(家庭や仕事など)に貢献できる状態って、どういう状態?を考えて、それを実現させるために自分を動かす。いい状態になっている、ということは、私の存在や行動、発言で、周囲もハッピーということです。ウィンウィン。
  • 21:20 あ、一瞬いま年末に思えた。
  • 21:26 もやしが売り切れで泣ける。
  • 21:27 バナナも売り切れで泣ける。
  • 21:33 鉛筆削りはあったよ。
  • 21:53 今年も善寳寺から御札が届いたようだ。頼んでくれているの両親に感謝。
  • 22:53 毎年今ごろになると注連飾りをいつ外すかググる。
  • 22:57 注連飾りは1月7日に外すということにしておく(1月7日に外すか、1月7日の終わった次の8日に外すかで、毎年忘れて悩む)。
  • 23:08 ミクコレ設定をメタリックにした。 http://bit.ly/6Q1RTX
  • 23:18 あいかわらず HootSuiteOAuth 対応してないのか。
  • 24:42 メールけいしちょう登録してみようと思ったけれど空メール送るタイプなのか。ちょっと面倒。
  • 24:44 そして待てどもメールけいしちょうからの自動返信メールがこないと思ったら Gmailspam 扱いされていたという。
  • 24:54 メールけいしちょう登録完了。様子を見てケータイに転送するように設定する。
[ 1月6日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.054133s / load averages: 0.64, 0.45, 0.33
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker