2015-12-14 10 views
9

私はカーネルモジュールの単体テストを行うために関数とグローバル変数をモックすることに興味があります。カーネルモジュールのテスト

最初にhttps://github.com/ThrowTheSwitch/CMockを試しましたが、問題が発生しました。これを行う方法に関する記事リンクも素晴らしいでしょう。 (カーネルモジュールの場合)。 stdioが利用できないため、カーネルモジュールとしてコンパイルするとエラーが発生する可能性があります。ユーザースペース用にコンパイルすると、printkのようなものが見つからないため、エラーになります。

理想的には、ユーザーレベルの実行可能ファイルか、自分の関数で単体テストを実行するカーネルモジュールのいずれかがあります。私が問題を抱えている部分は、まともなテストを書くために関数が依存する構造体のようなグローバルな依存関係を模擬することです。

私はいくつかquestionsarticlesaboutthisを通じて行ってきたが、その答え、またはこれが可能ではないであろう理由の決定的な理由を発見していません。

答えて

4
次のように私が進行する

    • は、ユーザレベルのプログラムは、どちらかに基づくことができ、あなたのモジュールをテストできるようにするAPIを定義し、あなたのカーネルモジュール
    • を実装/dev/(適切なioctlを定義することができます)の文字デバイス。
    • /proc/のファイル(推奨)。
    • 特定のシステムコール(推奨)。
    • /sys/
  • のエントリは、
+0

様々な機能をテストするユーザレベルのカーネルモジュールと相互作用する(CUnit又はgoogletestような適切なフレームワークを使用する場合に、)プログラムを実装Iこのアイディアのように、すでに書かれているコードでは実践するのが難しいです。 – andrei

関連する問題