問題タブ [ceedling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - テスト時に static を無効にするようなマクロを書く
このマクロを書くのに問題があります。シードリングを使用しています。
次のコードを含むファイル「globals.h」があります。
したがって、ここで起こるべきことは、コードが単一性でテストされていない場合、STATIC を使用するすべてのメソッドが静的になり、それ以外の場合は静的ではないということです。
テスト ファイルには「unity.h」が含まれ、次に「globals.h」が含まれ、さらに「protocol.h」が含まれます。
テスト対象のファイル「protocol.c」には、「globals.h」と「protocol.h」が含まれています。
テスト ファイル「test_protocol.c」には、「unity.h」、「globals.h」、「protocol.h」の順に含まれています。
私の理解では、UNITY を最初に定義する必要があります。次にglobals.h
、UNITY は UNITY.h で既に定義されているため、STATIC を何も定義しません。
しかし、私が見ている動作は、私が何をしてもそのディレクティブglobals.h
に入ることができないということです.#else
STATIC
static
ただし、多くの人がこの戦略を推奨し、実装しているため、私が達成しようとしていることが可能であることはわかっています。globals.h
では、 UNITY が定義されているのに、定義されていないと思わせる原因となっているのは何ですか?
c - ISR から呼び出される静的コールバック ルーチンを単体テストする方法
私は ceedling を使用して C アプリケーションの単体テストを行い、高いカバレッジを ~100% 達成しようとしています。
アプリケーション モジュールの 1 つに静的なコールバック関数があります。これは関数ポインタを使用して SDK 関数に登録され、SDK から特定のイベントで呼び出されます。
appModule.c では、
この関数を単体テストしたいのですが、この関数は静的であるため、ceedling test_appModule.c には表示されません。TEST_STATIC
の代わりにstatic
、この定義を回避する方法があります。
しかし、私はこの回避策の大ファンではありません。上記の問題に対する提案はありますか?