ユニットテスト環境はどのようなものが存在するか

Posted: 2012年11月28日

いままでユニットテストの話題を話してきましたが
ユニットテストは、どのようなものがあるかは触れていなかったため
今回はそこについて書いていきます。
開発言語によって、使用するものが異なるため
もちろん言語ごとに記載していきますが
今回は、C言語編(需要はなさそう)
ユニットテスト C言語 Wikipedia

C言語

CCUnit

書き方は他と同様で一般的な書き方
だけど、テストのテスト定義がCUnitよりも面倒に感じる

  • すべてのテストを書かなければいけない(main関数が膨らむ)
  • ccunit_newTestSuiteとccunit_deleteTestSuiteで確保/解放の必要がある

利点としては、テストごとの開始/終了処理とテスト実行/終了時の処理どちらも定義できること

CUnit

記述の行い易さは既存のassertを使用しているのと変わりがないのではと思ってしまうが
各種テストの開始・終了時の処理を実装可能なためその分は評価すべきなのかもしれない
テストの定義が面倒(テストスイート、テスト対象の静的配列を定義する)だけど、C言語だから仕方がないのかもしれない
TEST_ASSERT_EQUALS(a, b)で比較しますが、aとbの方が同じにしないとエラーになる(int, long)ではエラー
 もうすこし柔軟に作ってくれたらありがたいと思ってしまう。

CuTest

「C Unit Testing Framework」の略
みんな同じような名前つけすぎ
詳細な情報がないため、把握でき次第記述します。

Cutter

主にLinux系であり基本的には、makefileからの起動を行うようです。
基本的な機能がありかつ、テストの定義が不要(おそらく・・・)
cut**で始まるため可愛いと感じるか、気持ち悪いと感じるか
人それぞれですが環境さえ合えば使い勝手が良さそう
ちなみにCUnitをベースに改良されたフレームワークらしい

Embedded Unit

組み込み系向けユニットテストフレームワークらしい
詳細な情報がないため、把握でき次第記述します。

MinUnit

「minimal unit testing framework for C」という名前だけあってシンプル
各種テストの開始・終了時の処理は定義することはできないが
C言語の関数で状態を持たないプログラムの場合は、こちらを選択したほうがいいと思う
シンプルなため記述もCUnitより容易なため

状態を持つようになった場合は、工夫が必要
外部リソースの状態など(ファイルが存在しない等)

まとめ

他にも様々なユニットテストが存在しますが
今回上げたものは、適当に選択したものであり
どれが有名なのかという観点で選択したわけではありません。
C言語の場合は、C++のユニットテストを用いることも可能であり
今度のC++版ユニットテストを参照してみてください。

この中で使用するならばCUnitを使うかもしれませんが
実際だったら、もっと高機能なC++版ユニットテストを使用すると思います。

カテゴリー: バグ, ユニットテスト | タグ: , , | コメント無し »

コメント