Gtest和Gmock使用指南 (6) - 桩掉C函数

假设,被测函数用到了外部C函数,这对Gtest来说是极其麻烦的,因为Gtest是专门为C++设计的。例如:

$ cat func.cpp 
int extern_c_func(int);
int func_to_be_tested(int a, int b) {
    return a - extern_c_func(b);

要想办法用gmock桩掉extern_c_func(),我们需要借助第三方工具。

https://github.com/apriorit/gmock-global
从这里下载gmock-global.h,放到与func.cpp同一目录下。

$ cat func_ut5.cpp 
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include "gmock-global.h"
MOCK_GLOBAL_FUNC1(extern_c_func, int(int));
int func_to_be_tested(int, int, int);
class TestSuite : public ::testing::Test {
protected:
    void SetUp() override {
        // some setup
    void TearDown() override {
        // some tear down
TEST_F(TestSuite, TestCaseName) {
    int x = 2;
    EXPECT_GLOBAL_CALL(extern_c_func, extern_c_func(x))
    .WillOnce(::testing::Return(x));