問題タブ [cmock]
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 - CMock で ExpectWithArray を使用する例
Ubuntu 16.04 および Eclipse 4.7.2 で Ceedling を使用しています。これまでのところ、_ExpectWithArray モック関数を動作させることができないという例外を除いて、すべて正常に動作しています。
たとえば、モックする必要がある次の関数がありますvoid TestFunc(uint8_t * data);
。私のテストファイルには、次の呼び出しがあります
uint8_t TEST_DATA[5] = { 0xFF, 0x00, 0xA0, 0x00, 0x09 };
TestFunc_ExpectWithArray(TEST_DATA, 5)
また、さまざまな値を指定しようとしましparam_depth
たが、うまくいきませんでした。
テストを実行しようとすると、常に失敗します
私の経験では、モックする関数が適切なパラメーターで呼び出されず、CMock がモックされたバージョンの生成に失敗した場合に常に発生します。私は何を間違っていますか?誰かが _ExpectWithArray を適切に使用する方法の例を挙げてもらえますか?
c - Ceedling CMock settings for ARM STM32
I've been setting up Ceedling for STM32. The howto is very scarce, so far I've managed to google next to nothing. Fortunately, the framework is relatively transparent for its size. This is a PIC configuration. I set up something similar (project.yml
):
So far so good (no real work is yet attempted). Having added this definition
I'm having a warning:
No wonder, as next
is a PC platform 64-bit pointer. Still I am not at all sure whether I have to control CMOCK_MEM_PTR_AS_INT
or not. It depends on whether CMOCK_MEM_PTR_AS_INT
is a critical target (ARM) platform definition.
So far I haven't found an STM32 example.
unit-testing - モックされたファイルの依存関係を排除する
コードをモックしていますが、他のいくつかのファイルを含む元のヘッダーを含むモック ヘッダーが原因で、モック ファイルに含まれる他のファイルの依存関係を排除するのに苦労しています。以下のエラーが表示されます。
これは、次のサンプル シナリオによるものです: サンプル ファイル プレッシャ サービス mock.c を取り上げます。たとえば、mock.c ---- インクルード ---> mock.h です。 pressure_service.h を含めます。 pressure_service.h を含めているため、ble_service.h を含めようとしています。その後、元の SDK の c ファイルがコンパイルされていませんが、ヘッダー ファイルを含める必要があります。
Cmock が pressure_service.h をインクルードしないようにするにはどうすればよいでしょうか?
これは一般的な問題であり、CMOCK を使用する理由の全体的な目的であると信じていますが、解決策が見つからないようです。
c - __attribute__((weak) ) 関数は未定義の参照になります
現在、MinGW と CMake を使用して STM32 の単体テスト用に CMock をセットアップしようとしています。構成ファイルで、:weak: オプションを設定して、生成されたモックが弱い関数を提供するようにしました。一例は次のとおりです。
ただし、コンパイルすると、HAL_TIM_IC_Init エラーへの未定義の参照が表示されます。
属性を削除しweak
ても、未定義の参照エラーは発生しません。しかし、HAL レイヤーによって提供されるいくつかの関数をオーバーライドする必要があるため、モック ライブラリを弱いものにする必要があります。そうしないと、複数の定義エラーが発生します。
だから私の質問は、なぜ弱い属性が未定義の参照エラーを引き起こしたのか、どうすればそれを回避できるのでしょうか?