今年の夏、私は純粋な C で書かれた組み込みシステムに取り組みました。それは、私が勤務する会社が引き継いだ既存のプロジェクトでした。私は JUnit を使用して Java でユニット テストを書くことにかなり慣れてきましたが、既存のコード (リファクタリングが必要) とシステムに追加された新しいコードに対してユニット テストを書く最適な方法がわからず困っていました。
JUnit を使用して Java コードの単体テストと同じくらい簡単に、プレーンな C コードの単体テストを実行できるプロジェクトはありますか? 組み込み開発 (arm-linux プラットフォームへのクロスコンパイル) に特に当てはまる知見があれば、ぜひ教えてください。
ベストアンサー1
C言語のユニットテストフレームワークの1つはチェックC言語のユニットテストフレームワークのリストは以下にあります。ここ以下に再現します。ランタイムに含まれる標準ライブラリ関数の数に応じて、そのうちの 1 つを使用できる場合とできない場合があります。
エースユニット
AceUnit (Advanced C and Embedded Unit) は、使いやすい C コード ユニット テスト フレームワークであると自称しています。JUnit 4.x を模倣し、リフレクションのような機能を備えています。AceUnit は、組み込みソフトウェア開発などのリソース制限のある環境で使用できます。また、標準ヘッダー ファイルを 1 つも含めることができず、ANSI / ISO C ライブラリから標準 C 関数を 1 つも呼び出せない環境でも問題なく動作します。Windows への移植版もあります。シグナルをトラップするためにフォークは使用しませんが、作者はそのような機能を追加することに関心を示しています。AceUnitホームページ。
GNU オートユニット
Check とほぼ同じですが、別のアドレス空間でユニットテストを実行するためにフォークする機能も含まれています (実際、Check の元の作者は GNU Autounit からこのアイデアを借用しました)。GNU Autounit は GLib を多用するため、リンクなどに特別なオプションが必要になりますが、特に GTK や GLib を既に使用している場合は、大きな問題にはならないかもしれません。GNU Autounit ホームページ。
cユニット
GLib も使用しますが、ユニット テストのアドレス空間を保護するためにフォークしません。
CUnit
標準C、Win32 GUI実装の計画あり。現在はフォークやユニットテストのアドレス空間の保護は行いません。開発初期段階です。CUnit ホームページ。
キュテスト
ソースツリーにドロップする .c ファイルと .h ファイル 1 つだけのシンプルなフレームワークです。CuTestホームページ。
Cppユニット
C++ 向けの最高のユニット テスト フレームワークです。C コードのテストにも使用できます。安定しており、積極的に開発されており、GUI インターフェイスを備えています。C に CppUnit を使用しない主な理由は、まずサイズが大きいこと、次にテストを C++ で記述する必要があるため C++ コンパイラーが必要であることです。これらの問題が問題にならない場合は、他の C++ ユニット テスト フレームワークとともに検討する価値は間違いなくあります。CppUnit ホームページ。
embUnit
embUnit (Embedded Unit) は、組み込みシステム用の別のユニット テスト フレームワークです。これは、AceUnit に置き換えられたようです。組み込みユニットのホームページ。
最小単位
最小限のマクロのセット、それだけです!ポイントは、コードのユニットテストがいかに簡単かを示すことです。MinUnitホームページ。
安藤さんのためのCUnit
CUnitの実装はかなり新しく、どうやらまだ開発の初期段階にあるようです。安藤さんのためのCUnitホームページ。
このリストは 2008 年 3 月に最終更新されました。
その他のフレームワーク:
CMocka
CMocka は、モック オブジェクトをサポートする C のテスト フレームワークです。使いやすく、セットアップも簡単です。
基準
Criterion は、自動テスト登録、パラメータ化されたテスト、理論をサポートし、TAP や JUnit XML などの複数の形式に出力できるクロスプラットフォームの C ユニット テスト フレームワークです。各テストは独自のプロセスで実行されるため、必要に応じてシグナルやクラッシュを報告したりテストしたりできます。
を参照してくださいクライテリオンホームページ詳細については。
ホット
HWUT は、C を強力にサポートする汎用ユニット テスト ツールです。Makefile の作成、最小限の「反復テーブル」でコード化された大規模なテスト ケースの生成、ステート マシンのウォークスルー、C スタブの生成などに役立ちます。一般的なアプローチは非常にユニークです。判定は「良好な stdout/不良 stdout」に基づきます。ただし、比較関数は柔軟です。したがって、チェックには任意のタイプのスクリプトを使用できます。標準出力を生成できる任意の言語に適用できます。
見るHWUTホームページ。
Cグリーン
C および C++ 用の、最新のポータブルなクロス言語ユニット テストおよびモック フレームワークです。オプションの BDD 表記、モック ライブラリ、単一プロセスで実行する機能 (デバッグを容易にするため) を提供します。テスト関数を自動的に検出するテスト ランナーが利用可能です。ただし、プログラムで独自のテスト ランナーを作成することもできます。
これらの機能(およびその他)については、CGreenマニュアル。
WikipediaではCユニットテストフレームワークの詳細なリストが掲載されています。ユニットテストフレームワークのリスト: C