Linux上におけるCUnitの使い方
最近、社内の古いプログラムをメンテしているのだが、そのプログラムはC言語で実装されている。中身は複雑なLinuxソケットプログラムである。
ドキュメントもなければ、Unitテストプログラムも無い。
さすがに、Unitテストが無いのはマズイので、まずはUnitテストプログラムを書くことに。しかし、C言語でUnitテストなんてできるのか?一応、調査してみるCUnitなるライブラリは存在しているようだ。
導入方法は以下の通りです。
1.CUnitのRPMをダウンロードする
2.ターミナルから「rpm -ivh CUnit-2.1-0.i586.rpm」と入力し、ライブラリをインストールする
3.開発環境のライブラリディレクトリに「/usr/local/lib」を追加する
4.開発環境のインクルードディレクトリに「/usr/local/include」を追加する
これで、CUnitを利用できるようになります。
使い方の詳細は以下を参照
以下のコードは「http://www26.atwiki.jp/saborigineer/pages/24.html」から引用
[C]#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/**
* (引数-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(); /**< お掃除 */
}[/C]


