iutest と同様にヘッダオンリーで使用することができます。
C++ のテスティングフレームと比較して機能的には大分劣ります。
そもそも C言語のテスティングフレームが必要とされているのか疑問ではあります。
別にテストは C++ で書いてもいいわけですから。
(組み込みだとそうでもないのかなぁ)
ともあれ、 iutest_c の特徴的な機能を紹介したいと思います。
書き方
iutest_c は iutest から派生したプログラムです。テストの書き方はほとんど同じです。
また、iutest は Google Test を踏襲してますので、 Google Test を使っている人には分かりやすいと思います。
もっとも簡単なテストを紹介します。
IUTEST(CaseName, TestName) { int x = 0; IUTEST_ASSERT_EQ(0, x); }
テストを自動検出して実行
iutest_c でもテストを自動で検出して実行します。テストの登録用変数を定義したり、登録関数を呼んだり、面倒な手続きが不要です。
(※非対応コンパイラあり。その場合は、IUTEST_REIGSTER_TEST マクロで明示的な登録が必要です。)
テストフィクスチャ
iutest_c でもテストフィクスチャが使えます。void TestF_SetUp(void) { /* ここに SetUp コード */ } static const iuTestFixture TestF = { NULL /* SetUpTestCase */ , NULL /* TearDownTestCase */ , TestF_SetUp /* SetUp */ , NULL /* TearDwon */ }; IUTEST_F(TestF, Hoge) { IUTEST_ASSERT_TRUE(TRUE); }
iuTestFixture 構造体に TestCaseSetUp/TearDown,SetUp/TearDown 関数を設定します。
テストケース名にこの変数名を指定して下さい。
簡易的なパラメタライズテスト
関数の引数に値を渡すテストを簡単に記述できます。void TestFunction(int x, int y) { IUTEST_ASSERT_EQ(x, y); } IUTEST_PMZ(ParamMethodTest, EQ, TestFunction, 0, 0); IUTEST_PMZ(ParamMethodTest, EQ, TestFunction, 1, 1); IUTEST_PMZ(ParamMethodTest, EQ, TestFunction, 2, 2);
今後の予定
値のパラメータ化テストに対応できるような気がしないでもないので、v1.1 はそれを目標に開発を続けたいと思います。
0 件のコメント:
コメントを投稿