CCUnit の使い方

単純なテストを作る方法

  1. テスト関数を作ります。
    • 値をチェックするために `CCUNIT_ASSERT(bool)` クロを呼び出して、もしテストが成功するなら真を返すような真偽値を渡します。例えば:
      1. void test_equal() { CCUNIT_ASSERT(1==0); }
    • ASSERT を宣言するための簡便マクロはいくつか定義されています。例えば `CCUNIT_ASSERT_TEST_DOUBLE(10.5, >, 10.49)` や `CCUNIT_ASSERTGE_INT(4096, 4096) のようなマクロです。
  2. 上のテスト関数をテストケースという実行単位にします。
    1. #include <ccunit/CCUnit.h>
    2. void test_equal() { CCUNIT_ASSERT(1==0); } /* 必ず失敗するテスト関数 */
    3. int main()
    4. {
    5. CCUnitTestCase* testCase;
    6. testCase = ccunit_newTestCase ("int equal test");
    7. ccunit_addNewTestFunc (testCase,
    8. "test_equal",
    9. "int value equals test",
    10. test_equal);
  3. テストケースを実行し結果を表示します。
    1. CCUnitTestResult* result;
    2. result = ccunit_runTestCase (testCase);
    3. printf ("Test runs %d. %d tests failed\n",
    4. ccunit_runCount(result), ccunit_failureCount (result));
    5. return ccunit_failureCount (result);
    6. }
  4. testEqual.c というファイルに保存し、`libcunit` ライブラリとリンクします。
    1. $ gcc -o testEqual testEqual.c -lccunit
  5. コンパイルが成功したら `testEqual` という実行ファイルがきているはずです。
  6. これを実行すると次のように出力されます。
    Test runs 1.  1 tests failed

もう少し複雑なテスト

テストケースには、複数のテスト関数を登録することができます。またテストケースは、テストスイートにまとめることもできます。さらにテストスイートは、別のテストスイートに登録することもできます。
テストケースにテスト関数を登録したり、テストスーツにテストケースを登録する作業は単純で面倒です。これを自動化するツール `ccunit_makeSuite` を CCUnit では提供しています。また、テストを実行して進捗状況を画面に表示する `ccunit_runTestRunner` 関数も提供しています。
もう少しだけ詳しい説明は http://ccunit.sourceforghttp://ccunit.osdn.jp/ja/cookbook.html