2

C で記述された組み込みシステム コードの単体テストへのアプローチを検討しています。

同時に、使用できる優れた UT フレームワークも探しています。フレームワークには、かなり少数の依存関係が必要です。

優れた UT を備えた優れたオープンソース製品はありますか?

編集:

皆さん、答えてくれてありがとう -本当に感謝していますが、これは私の質問に直接答えることはできません:

C ユニット テストを使用するオープン ソース コードを知っていますか? コードから何かを学ぶことができるように、それがどのように行われるかを調べています...

4

2 に答える 2

2

基盤となるハードウェアの詳細を認識している薄いレイヤーが下部にあるような方法でコードをモジュール化します。そのレイヤーは、通常の PC でモック化できます。そうすれば、デスクトップ開発用の通常の単体テスト ライブラリを使用して、その薄い最下層を除くすべてのコードをテストできます。

Linux 用の組み込みソフトウェアの開発に関する私の経験では、単純な C ではなく C++ を使用しています。単体テストには cppunit を使用しました。

于 2010-03-25T19:26:05.873 に答える
1

編集:チェック プロジェクト ページに単体テスト フレームワークとしてチェックを使用するプロジェクトのリストがあります。一部のリンクは古くなっていますが、ピグメントSCEWの単体テストのソースを参照できます。他の人のためにソースをダウンロードする必要があります。


minunitには依存関係がまったくなく、独自のフレームワークを構築するためのベースとして使用できます。

アプローチに関する限り、私は最下位レベルの関数 (葉) から始めます。非常に頻繁に、高レベルの関数をテストしているときに、低レベルの関数が呼び出されます。下位機能は既にテストされているため、これは問題ではありません。

また、コードを「オブジェクト」またはオブジェクトのテーブルとしてモジュール化します。スタブ関数を使用すると、ハードウェアまたは他のコンポーネントを分離してテストできます。

それらを削除する定義を使用して static を削除するか、テストする関数を含むソース ファイルを単体テスト ソース ファイルに含めます。

#if defined(UNIT_TESTING)
#define STATIC
#else
#define STATIC static
#endif

ここにはロケット科学はありませんが、これでうまくいきます。

最後に、実装ではなく動作をテストして、実装が変更されたときに単体テストが壊れないようにします。

于 2010-03-25T19:49:15.940 に答える