一个简单好用的C++语言单元测试框架-GoogleTest

这篇具有很好参考价值的文章主要介绍了一个简单好用的C++语言单元测试框架-GoogleTest。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GoogleTest 简介:

GoogleTest 是由 Google 开发的一个用于编写 C++ 单元测试的框架。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在实际项目中,单元测试往往由开发人员完成。GoogleTest 是一个开源项目,广泛应用于 C++ 代码的单元测试。

GoogleTest 简单应用:

1、下载 googletest 框架

去 GitHub下载,或者gti clone到本地,链接地址:googletest。

googletest 中有两个目录 googletest 和 googlemock,都是 Google 开发的两个C++测试框架,分别用于进行单元测试和模拟对象。

2、使用 googletest 框架

进入 googletest 目录,将 googletest /CMakeLists.txt 中option(BUILD_GMOCK “Builds the googlemock subproject” ON) 改为OFF,ON 是编译 googlemock。

然后将 googletest /googletest /CMakeLists.txt 中 option(BUILD_SHARED_LIBS “Build shared libraries (DLLs).” OFF) 改为 ON,OFF 为编译成静态库。

在外层 googletest 目录下创建 build 目录

进入 build 目录输入 cmake .. && make

在 build/lib 目录下会有生成的共享库文件。

3、配置运行环境

在任意地方创建一个 TestCase 目录。

项目结构如下:

|-- CMakeLists.txt
|-- main.cpp
|-- test
|   `-- StringUtilTest.cpp
`-- utils
    |-- StringUtil.cpp
    |-- StringUtil.h
    |-- TestUtil.cpp
    `-- TestUtil.h

CMakeLists.txt

#basic setting  
PROJECT(TestCpp)  
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)  
#SET(CMAKE_BUILD_TYPE Debug)  
 
#header files  
SET(HEADER_FILES_PATH  
./utils  
./test  
./include
)  
INCLUDE_DIRECTORIES(${HEADER_FILES_PATH})  
 
#src files  
AUX_SOURCE_DIRECTORY(. SRC_LIST)  
AUX_SOURCE_DIRECTORY(./utils SRC_LIST_1)  
LIST(APPEND SRC_LIST ${SRC_LIST_1})  
AUX_SOURCE_DIRECTORY(./test SRC_LIST_2)  
LIST(APPEND SRC_LIST ${SRC_LIST_2})  

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
 
#build setting  
LINK_DIRECTORIES(/home/huangjiaxin/workspace/googletest/testcase/lib/gtest)  
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_LIST})  
TARGET_LINK_LIBRARIES(${PROJECT_NAME} libgtest.so) 

main.cpp

#include "TestUtil.h"  
 
int main(int argc, char** argv)  
{  
   TestUtil::runTests(argc, argv);  
   return 0;  
}

StringUtilTest.cpp

#include "StringUtil.h"  
#include "gtest/gtest.h"
#include <string>  
 
using namespace std;  
 
TEST(StringUtilTest, getTestString)  
{  
    StringUtil* str = new StringUtil();  
    EXPECT_EQ("Hello,world!", str->getTestString());  
    delete str;  
}  

StringUtil.cpp

#include "StringUtil.h"  
 
using namespace std;  
StringUtil::StringUtil()  
{  
}  
 
std::string StringUtil::getTestString()  
{  
    return string("Hello,world!");  
}  

StringUtil.h

#ifndef STRINGUTIL_H  
#define STRINGUTIL_H  
#include <string>  
 
class StringUtil  
{  
public:  
    StringUtil();  
 
    std::string getTestString();  
};  
 
#endif // STRINGUTIL_H

TestUtil.cpp

#include "TestUtil.h"  
# include <gtest/gtest.h>  
 
int TestUtil::runTests(int argc, char **argv)  
{  
    testing::InitGoogleTest(&argc, argv);  
    return RUN_ALL_TESTS();  
}  

TestUtil.h

#ifndef TESTUTIL_H  
#define TESTUTIL_H  
#include <string>  
 
class TestUtil  
{  
public:  
    static int runTests(int argc, char **argv);  
 
private:  
    TestUtil(){}  
};  
 
#endif // TESTUTIL_H

构建好以上目录结构后,配置编译好的头文件和动态库文件,将 googletest/googletest/build/lib 目录下的共享库文件全部复制到 /usr/lib/gtest 目录下。sudo cp googletest/googletest/build/lib/* /usr/lib/gtest

将 googletest/googletest/include/ 目录下的头文件复制到 /usr/include/gtest 目录下。sudo cp googletest/googletest/include/gtest /usr/include/gtest -R

上述方法需要管理员权限,而将共享库和头文件复制到 TestCase 目录下就不需要管理员权限,不过需要在 CMakeLists.txt 中指明路径。在 TestCase 目录下创建 lib/gtest 和 include/gtest 目录,和上面一样将 googletest/googletest/ 下的共享库文件和头文件复制过来。

4、运行测试程序

在 TestCase 下创建 build 目录,进入 build 目录,输入cmake .. && make,就会在 TestCase/bin 下生成可执行文件 TestCpp。

运行可执行文件 ./TestCpp ,会有以下输出信息。

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from StringUtilTest
[ RUN      ] StringUtilTest.getTestString
[       OK ] StringUtilTest.getTestString (0 ms)
[----------] 1 test from StringUtilTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

总结:

googletest特点是跨平台参数化测试丰富的输出支持测试断言等。其中还有许多测试断言和高级用法需要多了解多使用。

好了以上就是googletest单元测试框架的简易使用方法,有什么疑问和建议欢迎在评论区中提出,想要了解更多的googletest知识可以去官网上查看,官网上也有详细的教程和实例。文章来源地址https://www.toymoban.com/news/detail-803887.html

到了这里,关于一个简单好用的C++语言单元测试框架-GoogleTest的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NSubstitute:一个简单易用、灵活多变的.NET单元测试模拟框架

    推荐一个简单易用、灵活多变的.NET单元测试模拟框架,让开发者能够更轻松地进行单元测试。 NSubstitute是一个开源的.NET单元测试模拟类库,该框架设计的主要目标是提供一个简单明了、易用性强、贴近自然语言的模拟测试框架。它使得开发者能够专注于测试工作,而不是纠

    2024年02月07日
    浏览(40)
  • C++ 测试框架 GoogleTest 初学者入门篇 丙

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/RIztusI3uKRnoHVf0sloeg 开发者虽然主要负责工程里的开发任务,但是每个开发完毕的功能都是需要开发者自测通过的,所以经常会听到开发者提起单元测试的话题。那么今天我就

    2023年04月15日
    浏览(39)
  • 基于MSTest框架创建一个简单的C#单元测试(Visual Studio 2019版)

    目录 1、环境准备 2、创建一个被测试项目 3、创建单元测试项目 4、执行测试 5、说明   环境: IDE: Visual Studio 2019 单元测试框架:MSTest .NET 版本:.NET Core 3.1 Test.Sdk版本:Microsoft.NET.Test.Sdk 16.9.4 目的: 编写单元测试方法以验证   BankAccount   类的   Debit   方法,至少需要检查

    2023年04月26日
    浏览(73)
  • 【C C++开源库】适合单片机 嵌入式的C语言单元测试库_单片机 单元测试框架

    #define TEST_ASSERT_LESS_THAN_UINT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, NULL) #define TEST_ASSERT_LESS_THAN_size_t(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL) #define TEST_ASSERT_LESS_THAN_HEX8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((thres

    2024年04月25日
    浏览(40)
  • GoogleTest 测试框架

    GoogleTest(GTest) 是谷歌开源的 C++ 单元测试框架。 单元测试 unit testing 是指对软件中的最小可测试单元进行检查和验证,包括函数、类、模块、复杂交互逻辑等。gtest 中单元测试以单例模式实现。每个单元测试包含若干个 测试套件 test suite ,测试套件是指一组功能相同的测试

    2024年02月11日
    浏览(33)
  • 使用 Visual Studio GoogleTest编写 C/C++ 单元测试——入门篇

    Visual Studio 新建 GoogleTest项目,一路选默认参数 pch.h pch.cpp test.cpp 编译运行 成功 [C++] gtest入门教程 开始尝试google test单元测试工具(又是MTd/MDd搞的鬼!)附带VC运行库详解 在当前解决方案下,新建GoogleTest项目 引用自己要测试的工程,配置相关属性(C++ 附加包含目录等) 运行

    2024年02月12日
    浏览(33)
  • C++轻量级单元测试框架

    单元测试是构建稳定、高质量的程序、服务或系统的必不可少的一环。通过单元测试,我们可以在开发过程中及时发现和修复代码中的问题,提高代码的质量和可维护性。同时,单元测试也可以帮助我们更好地理解代码的功能和实现细节,从而更好地进行代码重构和优化。

    2023年04月25日
    浏览(56)
  • linux环境编程(1): 实现一个单元测试框架-2

    在之前的文章中, 介绍了如何实现一个类似gtest的单元测试框架, 完整的项目代码可以参考这里: https://github.com/kfggww/cutest . 近期对cutest的实现做了一些修改, 包括: Test Suite的声明宏, 修改为TEST_SUITE 增加Test Suite的声明宏TEST_SUITE_WITH. 可传递Suite的init和cleanup函数, 在Suite中每个Cas

    2024年02月12日
    浏览(30)
  • Java开发手册之单元测试,软件测试端简单易用的SPI框架

    【推荐】编写单元测试代码遵守 BCDE 原则,以保证被测试模块的交付质量。 B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。 C:Correct,正确的输入,并得到预期的结果。 D:Design,与设计文档相结合,来编写单元测试。 E:Error,强制错误信息输

    2024年04月25日
    浏览(38)
  • <c++开发>测试工具 -之-GoogleTest

    <c++开发>测试工具 -之-GoogleTest GoogleTest 是测试技术团队根据 Google 的特定要求和限制开发的测试框架。无论您在 Linux、Windows 还是 Mac 上工作,如果您编写 C++ 代码,GoogleTest 都可以为您提供帮助。它支持任何类型的测试,而不仅仅是单元测试。Google Test 是由 Google 推出的 C

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包