c語言單元測試,如何偽裝 mock 函式呼叫

2021-10-02 15:13:22 字數 1405 閱讀 7254

本文**主要實現了c語言單測時mock方法。

test.h檔案

#ifdef debug

#ifndef __test_h__

#define __test_h__

#define mockfun(x, y) mock_##x = y

#include

#ifdef __cplusplus

extern

"c"#endif

#define malloc(x) mock_malloc(x);

#endif

//__test_h__

#endif

//debug

test.c檔案

#define debug

#include

#include

#ifdef __cplusplus

extern

"c"void

*malloc_yes

(unsigned

int size)

#ifdef __cplusplus

}#endif

#include

"test.h"

type_malloc mock_malloc = malloc_yes;

main.cpp檔案

#include #include #include #define debug

#include "test.h"

test(test_mock_malloc, malloc_yes)

test(test_mock_malloc, malloc_return_null)

cmakelists.txt檔案

#cmake版本

cmake_minimum_required(version 2.8.12)

#專案名稱

project(testmock)

#gcc版本

set(cmake_cxx_standard 11)

#預設編譯選項

add_definitions(-g -n -wall -std=c++11)

#庫函式查詢路徑

link_directories(lib)

#增加鏈結庫

link_libraries(gtest gtest_main pthread)

#頭檔案目錄

include_directories(include)

#增加生成目標可執行檔案

add_executable(testmock main.cpp test.h test.c)

單元測試之模擬Mock

先看下面一段 public class dataservice idataservice public int getcount 其中有 getcount 方法是為獲取列表的 count,我們為這個方法寫單元測試 getcount 中獲取列表是呼叫了 idatarespository 中的 getl...

golang單元測試之mock

搞單元測試,如果碰到這些情況 1,乙個函式,內部包含了很多並且很深的呼叫,但是如果單單測這個函式,其實實現的功能很簡單。2,乙個函式,包含了其他還未實現的呼叫。3,函式內部對資料的要求極為苛刻。那麼這時候就可以考慮使用mock來處理。mock,簡而言之就是可以通過注入我們所期望返回的資料,或者我們所...

Object C單元測試 MOCK(摘錄精選)

斷言測試型別 下面一共18個斷言 sdk中也是18個,其含義 ios unittest 學習筆記,真心佩服原文的博主 xctfail format 生成乙個失敗的測試 xctassertnil a1,format.為空判斷,a1為空時通過,反之不通過 xctassertnotnil a1,forma...