![](/img/trans.png)
[英]Mocking member functions while unit testing C++ class gtest/gmock
[英]How to write unit test for global functions where it is calling another global function using gtest/gmock in C++?
我在文件中有大約10個全局函數。 需要為它們每個編寫單元測試用例。 可以從另一個全局函數調用全局函數。
您可以考慮以下三個全局功能。
int bar(int n){
..........
//Could call another global function.
..........
}
int foo(int n){
..........
int b = bar(x);
..........
}
int hut(int n){
..........
..........
int a = foo(x);
..........
..........
int b = hut(y);
..........
..........
}
在測試hut()時,應該模擬foo()和bar()函數。 foo()和bar()也可能發生相同的情況。 我正在使用gtest和gmock。 可以使用gtest和gmock嗎?
謝謝閱讀。
如果它們在同一個文件中,則可悲的是沒有(健全)的方法來模擬那些全局函數。 即使它們不是,您也很難做到這一點(例如,在構建用於單元測試的代碼時,將原始代碼修改為#include
模擬標頭,而不是真實的標頭),它不會很漂亮,所以我d強烈建議您不要這樣做。
盡管有第三方擴展添加了全局模擬支持,但它僅有助於創建模擬,但不幸的是, “我如何使函數調用模擬”這一問題沒有幫助。
他們在此FAQ中對此進行了介紹 ,甚至在其Blog中提供了可能的解決方法-您可以以“擺脫”靜態全局函數並使代碼可測試的方式重寫代碼。
簡而言之:不,沒有模擬全局函數的簡便方法(尤其是當它們調用其他全局函數時),將代碼重構為可測試性更高的方法可能更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.