2
我正在使用Cmocka進行單元測試,並且無法更改。Cmocka如何測試使用正確的參數調用了我的(void)回調函數?
我正在測試我的軟件的一部分,它調用回調函數,如果一個值發生變化,說明哪個數據項更改以及新值是什麼。
的回調函數有這樣的簽名:
typedef void (* Value_changed_call_back) (int item_Id, int new_value);
對於單元測試,我想註冊一些回調函數,並確保它們實際上是調用,他們獲得正確的參數。
我可以在我的模擬中使用expect_int()
來驗證它們是否被調用了正確的參數。
但是,我不明白我可以如何使用will_return()
,因爲我的回調函數的類型爲void
(並且不能更改)。
我將如何聲明一個模擬回調函數並驗證它是否被調用了正確的參數?請注意,如果該函數未被調用,那麼測試應該失敗。
Sicne你是唯一回答的人,我會把問題和獎勵分給你。如果我不這樣做,系統會自動獎勵你,但你只能獲得一半的積分。歡迎來到Stack Overflow,並感謝您的幫助。 – Mawg
@Mawg謝謝,我確實花時間瀏覽了cmocha文檔,這是我能想到的唯一解決方案。當我關心過去在測試中的執行順序時,我做了類似的全局變量設置。 –
該文檔不是很好,是嗎?實際上,對於最初由Google開發的內容,缺乏可用的信息。然而,使用GCC的鏈接器'wrap'選項的模擬函數的方式非常甜,以至於我找不到更好的系統。 – Mawg