美文网首页
Gtest和Gmock使用指南 (6) - 桩掉C函数

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

作者: louyang | 来源:发表于2021-01-03 17:15 被阅读0次

    假设,被测函数用到了外部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));
    
        EXPECT_EQ(-1, func_to_be_tested(3,2,x));
    }
    
    $ g++ func.cpp func_ut5.cpp -l gtest -l gtest_main -l pthread -l gmock && ./a.out
    

    相关文章

      网友评论

          本文标题:Gtest和Gmock使用指南 (6) - 桩掉C函数

          本文链接:https://www.haomeiwen.com/subject/weysnktx.html