ViVa! Saborigineer.
EclipseでCUnit
最終更新:
saborigineer
-
view
showrss プラグインエラー: RSSが見つかりません。
EclipseでCUnitを使う
CUnitとは、単体テストフレームワーク のことで、テストプログラムを作成すると、単体テストを自動で行うことができます。
(検索すれば情報がたくさん出てくるので、詳細については省略します)
(検索すれば情報がたくさん出てくるので、詳細については省略します)
今回、Linux(Cent OS)上のEclipseでCUnitを使ってみたので、覚え書き&まとめ。
CUnitのインストール
公式サイトからrpmをダウンロードしてきてインストールするだけ。
rootになって↓をやればOK。
# rpm -ivh CUnit-2.1-0.i586.rpm
Eclipseで使ってみる
CUnit(のライブラリ)を使用するには、コンパイル時に以下のようなオプションの指定が必要です。
# gcc -L/usr/local/lib -lcunit hogehoge.c
Eclipseで使用する際には、プロジェクトをプロパティを↓のように設定すればOK。
実際に使ってみる
試しに↓のプログラムで実行。
#include <stdio.h> #include <Cunit/Cunit.h> #include <CUnit/CUError.h> #include <CUnit/TestDB.h> #include <CUnit/TestRun.h> #include <CUnit/Automated.h> #include <CUnit/Basic.h> #include <CUnit/Console.h> #include <CUnit/CUCurses.h> #include <CUnit/Win.h> /** * (引数-1)する関数 */ int vset(int no) { return no-1; } /** * テスト1: vset(5) == 4 ? */ void test1(void) { CU_ASSERT( vset(5) == 4); } /** * テスト2: vset(3) == 4 ? */ void test2(void) { CU_ASSERT( vset(3) == 4); } /** * メイン関数 */ main() { CU_pSuite suite; /**< テスト・スイートの宣言 */ // int a = vset(5); //printf("%d\n", a); CU_initialize_registry(); /**< CUnit初期化 */ suite = CU_add_suite("suite",NULL,NULL); /**< テスト・スイートの追加 */ CU_add_test(suite, "vset(5) == 4 ?", test1); /**< テスト1の追加 */ CU_add_test(suite, "vset(3) == 4 ?", test2); /**< テスト2の追加 */ CU_basic_run_tests(); /**< テスト実行(自動実行) */ //CU_console_run_tests(); /**< テスト実行(コンソールで操作しながら) */ //CU_automated_run_tests(); /**< テスト実行(結果をXMLに出力) */ CU_cleanup_registry(); /**< お掃除 */ }
これをコンパイルして実行すると、↓のような結果が得られる。
Suite: suite Test: vset(5) == 4 ? ... passed Test: vset(3) == 4 ? ... FAILED 1. ../src/CUnit_Sample.c:30 - vset(3) == 4 --Run Summary: Type Total Ran Passed Failed suites 1 1 n/a 0 tests 2 2 1 1 asserts 2 2 1 1
所感
まぁ、シンプルなプログラムになら適用しやすいかな、という印象。
大規模システムに適用するには工夫が必要と思われる。
大規模システムに適用するには工夫が必要と思われる。
CUnitで提供されるアサート・マクロの種類を見ても、ホワイトボックステストには向かない感じ。
But、ブラックボックステストやデグレード確認等は楽にできそう。
But、ブラックボックステストやデグレード確認等は楽にできそう。
ただ、テストファースト的な開発でCUnitを使うと、
「テストしやすいように設計しなきゃ!」 ↓ 「よーし、関数の独立性を高くしちゃうぞ!」 ↓ 「ここはもう少しシンプルにしておこう!」
とかなって、割といい設計になりそうな気もしないでもない。
…全ては「使い方次第」ってことでしょうか (^^ゞ
-おしまい