$ cat func_test.cpp#include<gtest/gtest.h>intfunc_to_be_tested(int,int);TEST(TestSuiteName,TestCaseName){EXPECT_EQ(1,func_to_be_tested(3,2));}intmain(intargc,char**argv){::testing::InitGoogleTest(&argc,argv);returnRUN_ALL_TESTS();} $ g++func.cpp func_ut1.cpp-l gtest&&./a....
使用Gmock桩掉这个接口类的实现: classMockInterfaceImpl:publicSomeInterface{public:MOCK_METHOD1(some_func,bool(std::string¶m));}; MOCK_METHOD1中的1表示桩掉的函数只有一个入参。 完整的示例代码如下: $ cat Test.cpp#include<iostream>#include<gtest/gtest.h>#include<gmock/gmock.h>classSomeInterfa...
然后创造一个Mock对象,接下来,我们用EXPECT_CALL来定义Mock对象的行为,EXPECT_CALL 是有点难理解的,接下来,我们详细说一说。
// install gtest$ sudo dnf install dnf-plugins-core $ sudo dnf config-manager--set-enabled PowerTools $ sudo dnf install gtest gtest-devel// install gmock (not tested)$ sudo dnf install gmock gmock-devel// install lcov$ sudo dnf-y install https://pkgs.dyn.su/el8/base/x86_64/raven-re...
测试开始前准备环境,测试结束后清理现场,这是比较常见的做法。 每遇到一次TEST_F,SetUP/TearDown都会被运行一次。
前文中,我们定义了一个Mock类, 然后创造一个Mock对象, 接下来,我们用EXPECT_CALL来定义Mock对象的行为, EXPECT_CALL是有点难理解的,接下来,...
前面例子中EXPECT_EQ(ret_value, 1);表示ret_value应该等于1,用于描述我们期待的测试结果。 期待的结果可以用下面的方式表达,后续的行为有所不同 EXPECT_*失败仍然继续 ASSERT_*失败即停 其中*可以为: 布尔型结果 TRUE(condition) FALSE(condition) 例如,EXPECT_TRUE(retValue == 1) ...
在(1)中,func_test.cpp中有main()函数,但这不是必须的。 $ catfunc.cppintfunc_to_be_tested(inta,intb){returna-b;} $ cat func_test.cpp#include<gtest/gtest.h>intfunc_to_be_tested(int,int);TEST(TestSuiteName,TestCaseName){EXPECT_EQ(1,func_to_be_tested(3,2));} ...
假设,被测函数用到了外部C函数,这对Gtest来说是极其麻烦的,因为Gtest是专门为C++设计的。例如: $ cat func.cppintextern_c_func(int);intfunc_to_be_tested(inta,intb){returna-extern_c_func(b);} 要想办法用gmock桩掉extern_c_func(),我们需要借助第三方工具。
$ catfunc.cppintfunc_to_be_tested(inta,intb){returna-b;} $ cat func_ut3.cpp#include<gtest/gtest.h>intfunc_to_be_tested(int,int);classTestSuite:public::testing::Test{};TEST_F(TestSuite,TestCaseName){EXPECT_EQ(1,func_to_be_tested(3,2));} ...