cmocka フレームワークで単体テストを実装して、いくつかの機能をテストしたいと考えています。
たとえば、2 つの静的関数を呼び出すテスト対象の非静的関数があります。これらの静的関数はハードウェアと対話するという事実のため、テスト時にそれらをモック/ラップし、実際の関数の代わりにラップ関数を使用したいと考えています。
cmocka のドキュメントで説明されているように、テストをビルド/リンクするときに --wrap=myfunction リンカー フラグを使用しました。
テストはコンパイルされますが、実行すると、ラップの代わりに実際の静的関数が呼び出されます。
静的関数を非静的と宣言すると、どちらも機能せず、実際の関数も呼び出されます。私が見つけた唯一の解決策は、追加の .c ファイルで関数を外部委託することです...しかし、コードを非常に操作するため、これは非常に悪い回避策です。