2004年01月25日(日) [長年日記]
■ [c][soft][dev] CCUnit の使い方
CCUnitを使ってみたので忘れないようメモ。
テストのために自分で作成しなければいけないファイルは、テストプログラムのメインファイル(1つ)とテストコードを書いたファイル(必要な数だけ)の2種類。テストコードを書いたら、ccunit_makeSuite ツールを使って「スイート」のコードを自動生成する。で、テスト用のファイルと自動生成されたスイート、テストしたいファイルをコンパイルすればOK。
テストプログラムのメインファイルはこう。ccunit_suite の引数に何を指定すればいいのか分からない。
#include <ccunit/CCUnitTestRunner.h> #include <ccunit/CCUnitTestSuite.h> int main() { CCUnitTestRunner *runner; CCUnitTestSuite *suite; runner = ccunit_newTestRunner(stdout); suite = ccunit_suite("ここには何を書けばいいのかな"); return ccunit_runTestRunner(runner, suite); }
テストコードはこんな感じ。ccunit_makeSuite のためにJavadoc形式のコメントを書いておく。setUp_xxx と tearDown_xxx は各テストの前後に実行される(JUnitと同じ)。実行結果のチェックにはここにあるマクロを使用する。
#include <ccunit/CCUnitAssert.h> /** test case: ここにも何を書けばいいのか分からない */ #include "foo.h" void setUp_foo() { } void tearDown_foo() { } /** * 足し算のテスト * ここに書いたことはテストに失敗すると表示される */ void test_add() { int a; a = foo_add(5, 5); CCUNIT_ASSERT_EQ_INT(10, a); } /** * 引き算のテスト */ void test_sub() { int a; a = foo_sub(6, 5); CCUNIT_ASSERT_EQ_INT(1, a); } /** end test case */
スイートの自動生成はこんな感じ。これで test_foo.c と test_bar.c を元にして my_suite.c が自動生成される。
$ ccunit_makeSuite -o my_suite.c test_foo.c test_bar.c
コンパイルして出来上がった実行ファイルの出力結果はこう。
.F.. Time: 0.000189 sec FAILURES!!! Test Results: Run 3, Failures 1 There was 1 failure: test_foo.c:23: 足し算のテスト: 10 == a expect: 10 actual: 11
やはりユニットテストツールが使えるととても便利だ。
■ [life] 図書館へ行く
- 煙か土か食い物 (舞城王太郎)
- 立花隆秘書日記 (佐々木千賀子)
- サッカーマガジン 2003.12.2 「磐田が来た!」
を借りた。帰りに本屋でJavaWorld 3月号を購入。
■ [life] お見舞い
部屋の契約更新があるので、保証人の印を押してもらおうと実家へ行った。そうしたら、骨折で入院中の祖母のお見舞いに行くことになった。
祖母にはもう何年も会っていなかった。今は目がよく見えないということだったが、おれを見たらすぐにおれだと分かってくれた。会話もちゃんとでき、思っていたよりしっかりしていた。早く退院できますように。
■ 生活
- 朝起きたら背中が痛かった。なんなんだ。今は夜だがまだ痛い。
■ やること
- 靴紐を買う
- 家賃
- 保険料
- 決算
- 不動産屋
CCUnitの使用方法に付いて、もう少し詳細に教えていただけないでしょうか。<br>ソースファイルのディレクトリ構造(ツールのディレクトリとの関係)、<br>非テスト関数とテストケース、テストスイート関数との関係、<br>ソースコードのコンパイル方法(makefileの中身)<br>等を教えていただけないでしょうか