showrss plugin Error: 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を使うと、
「テストしやすいように設計しなきゃ!」 ↓ 「よーし、関数の独立性を高くしちゃうぞ!」 ↓ 「ここはもう少しシンプルにしておこう!」
とかなって、割といい設計になりそうな気もしないでもない。
…全ては「使い方次第」ってことでしょうか (^^ゞ
-おしまい
このwikiの更新情報RSS