[英]Mocking/Faking static function within Unit Test Environment
我正在使用cpputes t 來執行 c 代碼的單元測試。
在我測試的源代碼中,我有一個靜態函數,當從單元測試環境調用時,我希望將其“重定向”到該函數的“偽造”版本。
比方說,我有這樣的事情:
被測源代碼:
void my_main()
{
read(int8 address);
}
由此;
static int8 read(int8 address)
{
return something;
}
單元測試環境:
TEST(MY_TESTS, READ)
{
my_main();
}
在單元測試環境中調用my_main() 時,我想重定向
讀取(int8 地址)到:
int8 fake_read(int8 address)
{
//do_something
}
什么是這里的正確方法? 我已經嘗試過使用函數指針而不是依賴注入,但它不起作用。 任何的想法?
也許您可以利用鏈接器來做到這一點:創建兩個源文件——一個包含靜態函數的實際生產代碼,另一個包含模擬實現。
對於測試,鏈接第二個; 並運行您的應用程序的第一個。
我知道古老的問題,但是...
查看有關mock_c()
http://cpputest.github.io/mocking_manual.html#other_mock_support的文檔
int64_t GetTimeMS (void)
{
mock_c ()->actualCall ("GetTimeMS");
return (mock_c ()->returnValue ().value.longIntValue);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.