首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

gtest】 C++ 的测试框架之使用 gtest 编写单元测试

include(FetchContent):包含了 CMake 的 FetchContent 模块,用于从外部资源( GitHub)获取依赖项。...::gtest_main ) # 包含 GoogleTest 模块 include(GoogleTest) # 使用 gtest_discover_tests 函数来自动发现并添加测试 gtest_discover_tests...(hello_test) 上述配置启用了 CMake 中的测试,声明了要构建的 C++ 测试二进制文件(hello_test),并将其链接到 GoogleTest(gtest_main)。...当一个断言失败时,gtest 会打印断言的源文件和行号位置,以及一个失败消息。你还可以提供一个自定义的失败消息,它将附加到 gtest 的消息中。...gtest 提供了一系列断言,用于以各种方式验证代码的行为。可以检查布尔条件,基于关系运算符比较值,验证字符串值、浮点值等等。甚至还有一些断言可以通过提供自定义谓词来验证更复杂的状态。

4110

Google 单元测试框架

完整的 宏定义, 或见源码 include/gtest/gtest.h 使用哪种语句断言取决自己用例场景,当前语句失败时后续语句没有继续执行意义,则可以直接使用 ASSERT 终止,否则使用 EXPECT.../libgtest_main.a 链接 libgtest_main.a 是为了使用 src/gtest_main.cc中定义 main 函数,执行所用测试用例,否者,也可以自己定义 main。...#include #include "gtest/gtest.h" int main(int argc, char **argv) { printf("Running main(...bin 直接运行便运行所有用例,可以使用 -h 查看可选的执行参数,--gtest_filter=IsPrimeTest.Negative 指定执行 套件和 case ; --gtest_output...编译 编译说明 gmock 编译需要依赖 gtest, 准备好 gtest 和 gmock (同一个版本)后,手动编译的方法如下: 设置好 gtest 和 gmock 的工程路径,或者在下面命令中直接替换源路径

2.1K20

gtest的介绍和使用

系列:如果当前点检测失败则退出当前函数 2、EXPECT_系列:如果当前点检测失败则继续往下执行 如果你对自动输出的错误信息不满意的话,也是可以通过operator<<能够在失败的时候打印日志,将一些自定义的信息输出...IsAbsTest,HandlerTrueReturn){ASSERT_TRUE(Abs(1) == 1) << "Abs(1)=1"; //ASSERT_TRUE期待结果是true,operator<<输出一些自定义的信息...2、将第一条语句写成: ASSERT_FALSE(Abs(1) == 1) << “Abs(1)=1”,此时再次测试就会打印出自定义的出错信息了。 ?...test_map.find(1);ASSERT_NE(it,test_map.end());}TEST_F(TestMap,Size){ASSERT_EQ(test_map.size(),5);} int main...ASSERT_FALSE(link.pHead == NULL);ASSERT_TRUE(link.Delete(3) == true);ASSERT_TRUE(link.Delete(9) == false);}int main

1.4K10

Google Test(GTest)使用方法和源码解析——Listener技术分析和应用

在《Google Test(GTest)使用方法和源码解析——结果统计机制分析》文中,我么分析了GTest如何对测试结果进行统计的。...),此处比较适合输出测试用例的基本信息;再比如OnTestCaseEnd,是测试用例执行结束处(要执行自定义逻辑),此处比较适合输出测试用例的执行结果。        ...从名字上看可以看出它是一个Listener的集合,因为用户可以新增自定义的Listener,所以要将其设计为一个集合。...\n", test_info.test_case_name(), test_info.name()); } };         然后我们就需要在main函数中将该Listener...如果我们只想让我们自定义的Listener执行,则要先将默认Listener去掉(下面代码第3行)。

1.1K30

面向 C++ 的现代 CMake 教程(三)

现在我们可以通过创建另一个包含其自己的main()和测试逻辑的可执行文件来测试它。 在现实场景中,像main()方法这样的框架可以用来替换程序的入口点并运行所有定义的测试。...它们在构建和控制代码质量的过程中也起着重要的作用——无论是特殊编译器Protobuf,还是测试框架GTest。...最后,我们可以声明我们的测试运行器可执行文件,链接gtest_main,并借助内置的 CMake GoogleTest模块自动发现我们的测试用例,如下所示: chapter08/04-gtest/test...calc_test.cpp run_test.cpp) target_link_libraries(unit_tests PRIVATE sut gtest_main...calc_test.cpp run_test.cpp) target_link_libraries(unit_tests PRIVATE sut gtest_main

21000

GTest的安装与使用

,生成两个静态库:libgtest.a libgtest_main.a make 拷贝到系统目录,注意,如果下诉目录位置在不同版本位置有变动,用find ....(add(2,3),5);}int main(int argc,char **argv){testing::InitGoogleTest(&argc,argv);return RUN_ALL_TESTS...也可以在编写断言时,提供一个自定义的错误信息,这个信息在失败时会被附加在Google Test的错误信息之后。 断言常常成对出现,它们都测试同一个类或者函数,但对当前功能有着不同的效果。...TearDown()方法在所有案例执行后执行 还需要告诉gtest添加这个全局事件,我们需要在main函数中通过testing::AddGlobalTestEnvironment方法将事件挂进来,也就是说...<<"TearDown()"<<endl; } }; TEST_F(TestMap, Test1) { // you can refer to s here s->print(); } int main

2.1K10
领券