簡體   English   中英

在單元測試環境中模擬/偽造靜態函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM