2012年11月30日金曜日

iutest_c v1.0.0 をリリースしました

iutest_c は C言語で書かれたテスティングフレームワークです。

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 件のコメント:

コメントを投稿