C++ 用単体テストフレームワーク。 組み込み用などのプログラムでも使えるように修正された CppUnit-x というのもある。
支援ツールとして河童がある。
また CppUnit 1.5 から派生した C++ 用 単体テストフレームワークとして QtUnit がある。
以下 1.9.10 の頃の話。
CppUnit のプロジェクト設定では、「使用するランタイムライブラリ」がDLLのもののみなので
等が欲しい場合は、自分で設定を修正してビルドする必要がある(CppUnit 自身のスタティックリンク/ダイナミックリンクではなくランタイムライブラリの話)
こんな感じ。
#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() { } };
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 参照。
ちょっとした文字列構文解析関係の C++ コードを書き始めた。 C++ は随分触ってなかったので「C++ で書き直すのを考慮してそれっぽく Perl で書くから後で書き直して」と最初は言っておいたのだが、それもあんまりだと思って C++ で書くことにした。
Debian GNU/Linux 上で書くので GNU Automake + CppUnit で。 「Perl + Test::Harness」や「Java + Eclipse + JUnit」や「C# + Visual C# + NUnit」などと比べるとやっぱりタルいな。
1つメソッド書くのに、
と 4ファイル5カ所編集しなければならない。 クラス追加時には Makefile.am にヘッダファイルとソースファイルをテストケース用のと含めて4ファイル書き加える必要があるし。
あー面倒。
でも C++ で書き始めると楽しいんだよなあ。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。