CUnitを使おう!(導入編)

CUnitって・・・

 
CUnitとは...
単体テストを支援する 「テスティング・フレームワーク」である
「xUnit」のC言語バージョンです。
 
詳細設計が終了すれば単体テストを行いますが
それらの単体テストの集合体(テストスイート)をCUnitにて作成・実行することが可能となります。
 
CUnitの基本的な考え方として
 
テストレジストリ
 Lスイート1(項目?)
  Lテストケース1(パターン?)
 
 Lスイート2
  Lテストケース1
  Lテストケース2
 
というふうに
段階的にテストを設計することが可能です。
 
 
<参考>
 
 

とりあえず環境構築

ひとまず、参考URLのとおりに
Cygwin上でCUnitを動作させることを目指します。。
 
 
1. cygwin を以下からDL
 
 
2. cygwin インストール
→gcc make を追加... 他はデフォルトまま
 
 
3. CUnit を以下からDL
 
→CUnit-2.1-2-src.tar.bz2.tar.bz2.tar.bz2
 
 
4. cygwin 起動
 
5.解凍
$ tar -xvf CUnit-2.1-2-src.tar.bz2.tar.bz2.tar.bz2
→CUnit-2.1-2/が作成される
 
 
6.、ビルド&インストール
 
$./configure --enable-curses
...(--enable-curses オプション:カーソルキーを用いたテキストベースのインタラクティブな ユーザーインターフェースを提供してくれます。)
$make
...
$make install
...
 
 
これだけで導入完了!!!
 

どやって使うの?

環境は整ったようなので
実際に使い方の勉強も兼ねて動かしてみたいと思います。 
 
 
1. 適当な*.cファイル作成(main.c)
 
 
2. 評価対象の関数ソースを書きます。
(この関数をテストの対象と想定します。)
 
// 評価対象関数
int hoge( int a )
{
return a;
}
 
3. main()と評価関数(テストケース)を作成
 
// main
int main( void )
{
// test suite
CU_pSuite cu_suite;
 
printf("Hello CUnit Would!!\n");
 
// ------------------
// CUnit 初期化
// ------------------
 
// テストレジストリ 初期化
CU_initialize_registry();
 
// テストスイート登録
cu_suite = CU_add_suite("hoge", NULL, NULL);
 
 
// ------------------
// CUnit テスト登録
// ------------------
// テスト関数1
CU_add_test( cu_suite, "test_hoge_001", test_hoge_001 );
// テスト関数2
CU_add_test( cu_suite, "test_hoge_002", test_hoge_001 );
// テスト関数3
CU_add_test( cu_suite, "test_hoge_003", test_hoge_001 );
 
 
// ------------------
// CUnit 実行
// ------------------
CU_console_run_tests();
CU_cleanup_registry();
 
// 正常
return 0;
}
 
// test 1
void test_hoge_001( void )
{
CU_ASSERT( 1 == hoge( 1 ) );
}
 
// test 2
void test_hoge_002( void )
{
CU_ASSERT( 2 == hoge( 2 ) );
}
 
// test 3
void test_hoge_003( void )
{
CU_ASSERT( 3 == hoge( 3 ) );
}
...みたいな感じで書く(添付ファイルにソースおいておきます)
 
[備考]
CU_ASSERT( RESULT );
RESULT=TRUE(成功),FALSE(失敗)
 
 
4. make(cunittest.exeの作成)
$gcc main.c -o cunittest.exe -Wall -L/usr/local/lib -lcunit
 
[備考]
-L:ライブラリ格納先
-l:使用ライブラリ
 
 
5. とりあえず実行してみる
 
$./cunittest.exe
 
>     CUnit - A Unit testing framework for C - Version 2.1-2
>             http://cunit.sourceforge.net/
>
>
>***************** CUNIT CONSOLE - MAIN MENU ******************************
>(R)un  (S)elect  (L)ist  (A)ctivate  (F)ailures  (O)ptions  (H)elp  (Q)uit
>Enter command:
 
と表示され、コマンドを要求される。
 
6. テストの実行
 
5が表示されている状態で
"r"+Enter(run all)
で登録されているスイートが実行される。
 
>Running Suite : hoge
>     Running Test : test_hoge_001
>     Running Test : test_hoge_002
>     Running Test : test_hoge_003
>
>Run Summary:    Type  Total    Ran Passed Failed Inactive
>              suites      1      1    n/a      0        0
>               tests      3      3      3      0        0
>             asserts      3      3      3      0      n/a
>
>Elapsed time =    0.000 seconds
 
 
以上!!!CUnitの導入編でした!!!!!
 
<参考>
 
 

 

最終更新:2013年02月11日 16:35
添付ファイル