入門ガイド

コンセプト

リファレンス

main コード

iutest_c を実行するために必要な main コードを以下に記述します。
/* ワーキング変数の定義 */
IUTEST_C_WORKSPACE();

int main(int argc, char** argv)
{
    IUTEST_INIT(&argc, argv);
    return IUTEST_RUN_ALL_TESTS();
}

もっとも簡単なテスト

IUTEST(CaseName, TestName)
{
    int x = 0;
    IUTEST_ASSERT_EQ(0, x);
}
IUTEST マクロからテストの記述を開始します。
あとは、アサーションマクロを使用してあなたのコードをテストするだけです。

テストの明示的な登録

iutest_c はテストを自動的に検出して実行する機能がありますが、
一部対応していないコンパイラがあります。
その場合、IUTEST_REIGSTER_TEST を使用して登録をしてください。
int main(int argc, char** argv)
{
    /* 初期化前に call してください。 */
    /* testcase_name にテストケース名 */
    /* test_name にテスト名 */
    IUTEST_REIGSTER_TEST(testcase_name, test_name);

    IUTEST_INIT(&argc, argv);
    return IUTEST_RUN_ALL_TESTS();
}

アサーションの制限

iutest_c の アサーションには使用するにあたって、一部制限があります。

テストフィクスチャ

iutest_c でもテストフィクスチャに対応しています。
言語が C なので、テストフィクスチャは構造体と関数ポインタで構成します。
よって、iutest や Google Test とは少し違った記述が必要になります。
void TestF_SetUp(void)
{
  /* ここに SetUp コード */
}
static const iuTestFixture TestF = { NULL /* SetUpTestCase */
                                  , NULL /* TearDownTestCase */
                                  , TestF_SetUp /* SetUp */
                                  , NULL /* TearDwon */
                                  , NULL /* ユーザーデータ */
                                  };
IUTEST_F(TestF, Hoge)
{
   IUTEST_ASSERT_EQ(0, 0);
   IUTEST_EXPECT_NULL(iuUnitTest_GetCurrentUserData());
}
ユーザーデータには、iuUnitTest_GetCurrentUserData 関数を使うことでアクセスすることができます。

簡易的なパラメタライズテスト

関数の引数にパラメータを渡すテストを簡易的に記述できるマクロを用意してあります。

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);

テストプログラム実行時のオプション

テストの選択

テストの一覧
--iutest_list_tests
上記オプションを指定すると、プログラムは検出したテストの一覧を出力します。
テストの部分的な実行
--iutest_filter=<filter>
上記オプション、または環境変数 IUTEST_FILTER を指定すると、<filter> にマッチしたテストが実行されます。
(テスト名は TestCaseName.TestName)

フィルターのフォーマットは、':' で区切られたワイルドカードパターンのリスト(ポジティブ)と
':' で区切られたパターンの先頭に '-' がついたリスト(ネガティブ)です。
無効テストの実行
iutest_c でも、DISABLED テストが使用できます。
テストケースもしくはテスト名の先頭に "DISABLED_" が ついたテストは無効テストとして通常の実行では無視されます。
--iutest_also_run_disabled_tests
上記オプション、または環境変数 IUTEST_ALSO_RUN_DISABLED_TESTS を指定すると、無効テストも実行されます。

テストを繰り返す

--iutest_repeat=<count>
上記オプション、または環境変数 IUTEST_REPEAT を指定すると、テストの繰り返し回数を設定できます。
<count> に負数を指定した場合、無限に繰り返します。

テストをシャッフルする

--iutest_shuffle
上記オプション、または環境変数 IUTEST_SHUFFLE を指定すると、ランダムな順序でテストを実行します。
これによって、テスト間に良くない依存関係がないか調べることができます。

XML レポート

--iutest_output=xml[:filepath]
上記オプション、または環境変数 IUTEST_OUTPUT を指定すると、XML 形式でテスト結果を出力します。
出力フォーマットは、 JUnit report に基づいており、 Jenkins など CI ツールで解析することができます。

Copyright (c) 2012-2013, Takazumi-Shirayanagi, All rights reserved.