最近在写so库相关的
项目,由于so是针对接口的代码编程,因此需要写大量的
测试代码,因此使用
gtest来进行
测试自己的代码是很好的一个方式。
当然
测试还可以使用valgrind
测试代码
中是否有内存泄露。总之很爽。
操作系统为Debian操作系统。
需要安装
gtest
sudo apt-get install libtest-dev
动态库编写
新建
项目
项目目录如下:
下载google test
下载地址:https://github.com/google/googletest/tree/v1.10.x (我用的是1.10.x版本)
main.cc
#include
#include “gtest/gtest.h”
int Add(int a, int b) {
return a + b;
int Sub(int a, int b){
return a - b;
TEST(testCase, test0){
EXPECT_EQ(14, Add(4, 10));
TEST(testCase, test1){
管道用于运行测试。
简而言之,您会看到一个使用google test作为git子模块并集成了travis CI管道的C ++项目。
我的灵感来自部分的项目,并且在sime时需要对此进行改进:目标是使用git子模块,以避免在当前存储库中复制google test。
cmake项目文件
头文件( *.h )
源文件( *.cpp )
测试文件( *.cpp )
克隆项目
使用git clone --recursive ...下载项目及其git子模块。 否则,需要从项目根存储库下载子模块: git submodule update --init 。
建立项目
按照标准的cmake步骤创建可执行文件:
mkdir b
googletest
googletest 是一个由 Google 的测试技术团队开发的测试框架,它考虑到了谷歌的特定需求和限制。无论你使用的是 Linux、Windows 还是 Mac,只要你编写 C++ 代码,googletest 都可以帮到你。它支持任何类型的测试,不只是单元测试。
googletest安装
#下载gtest,release-1.8.0
git clone https://github.com/google/googletest
# gtest编译
cd googletest
#生成Makefile文件(先安装cmake,brew install cmake),继续输入命
https://www.cnblogs.com/gaopang/p/11630110.html
这是系列文章的第三篇,前两篇https://www.cnblogs.com/gaopang/p/11243367.html和https://www.cnblogs.com/gaopang/p/11588683.html.
为了保证软件质量,除去使用gdb进行事后调试,以及使用sanitize进行必要的提示以外,再就是单元测试了. Sanitize提供了关键性问题的提示,gdb提供了运行期间的错误解决途径,单元测
add_test(NAME <name> COMMAND <command> [<arg>...]
[CONFIGURATIONS <config>...]
[WORKING_DIRECTORY <dir>]
[COMMAND_EXPAND_LISTS])
今天占个位,等有时间再更新说明和使用案例
```
cmake
add_executable(my_executable my_source.cpp)
target_link_libraries(my_executable my_dll_library)
其
中,`my_executable` 是你要编译的可执行文件名,`my_source.cpp` 是你的源代码,`my_dll_library` 是你要链接的 DLL 库名。
如果 DLL 库的路径不在默认搜索路径
中,你需要使用 `link_directories` 命令指定路径,例如:
```
cmake
link_directories("path/to/my_dll_library")
如果你需要在 Windows 上链接导入库(.lib 文件),你需要使用 `target_link_libraries` 命令指定导入库名,例如:
```
cmake
add_executable(my_executable my_source.cpp)
target_link_libraries(my_executable my_dll_library my_import_library)
其
中,`my_import_library` 是你要链接的导入库名。注意,导入库名通常是 DLL 库名加上后缀 .lib。