$$\ $$\ $$\ $$\
\__| \__| $$ | $$ |
$$$$$$\$$$$\ $$\ $$$$$$$\ $$\ $$$$$$\ $$$$$$\ $$$$$$\ $$$$$$$\ $$$$$$\
$$ _$$ _$$\ $$ |$$ __$$\ $$ | $$ __$$\\_$$ _| $$ __$$\ $$ _____|\_$$ _|
$$ / $$ / $$ |$$ |$$ | $$ |$$ | $$ / $$ | $$ | $$$$$$$$ |\$$$$$$\ $$ |
$$ | $$ | $$ |$$ |$$ | $$ |$$ | $$ | $$ | $$ |$$\ $$ ____| \____$$\ $$ |$$\
$$ | $$ | $$ |$$ |$$ | $$ |$$ | \$$$$$$$ | \$$$$ |\$$$$$$$\ $$$$$$$ | \$$$$ |
\__| \__| \__|\__|\__| \__|\__|$$$$$$\ \____$$ | \____/ \_______|\_______/ \____/
\______|$$\ $$ |
\$$$$$$ |
\______/
C语言100行内仿 GoogleTest 测试框架(以及GitHub笔记)
鱼皮视频笔记完整版点这里,如果想要下载,点击右上角绿色的 Code ,再点击 Download ZIP。
原项目 googletest 名气大(谷歌出品,原仓库 25.7k star),据说工程中也常常用到。
google/googletest: GoogleTest - Google Testing and Mocking Framework
GoogleTest User’s Guide | GoogleTest
我根据课程仿写的这个项目的特点:
- 文档详细,带你从头写一个C语言项目。
- 除基本的Linux系统C语言环境外,无任何依赖,对只会 C 语言又想做项目的小白友好。
- 加深对C/C++中宏的理解。
- 理解一些软件工程的思想
也许可以对面试官吹水。 - 数据结构的思想:链表。
- 如果你有一个自己的(包括但不限于C/C++、Python)项目也可以轻易地在最后调用mini_gtest(毕竟很多语言都能调用C语言),让面试官眼前一亮
装个小b,让你的项目锦上添花。ヾ(≧▽≦*)o
所以,如果要 fork 或 star,请 fork 或 star 这个仓库吧,感谢各位大哥的厚爱了( ̄▽ ̄)ノ
linux(我用的 Ubuntu)、某些类 Unix 系统(MacOS)理论上可以
C语言编译器: 推荐gcc编译器
即 linux 下的C语言环境,只要能在 linux 下运行C语言,就能运行本项目。
只需要将其中一个 .h
头文件放到与源 C/C++ 代码同目录下,在代码头部添加 #include "geek_test_free.h"
,添加测试语句(见文档),编译运行原 C/C++ 程序。可根据我的示例修改。
见在线测试
选择以上的 gtest_test.cpp 和其中一个 .h 头文件放在同一个文件夹下即可,虽然命名为 cpp 实际改个后缀就可以用 gcc 编译了。
另外,其实这个 mini 版的 gtest 我自己也没有完全理解透彻。在 valgrind 检查内存泄露后,有一处自动 free 掉我也没搞明白,向各位大佬求教,可以给我提 issue 或 pull request!(pull request说实话我可能还要研究下,没合并过别人的),但是写这个项目还是受益匪浅,估摸着其中的思想还是大致掌握了。如果有疑问也可以提 issue 。
为什么要单独开源一个 repository (仓库)?
原因:我上次在5个隐藏的GitHub神技巧,助你秒变大佬!_哔哩哔哩_bilibili来自程序员鱼皮的视频中,看完了视频,惊觉十分有用(当年我自己探索的时候被各种环境劝退过)。于是决定记下笔记,当一次“课代表”,所以我就(顺势)开源(复制)了我自己笔记地址:Note/github.md at main · youhuangla/Note。
当时原本只是想着给大家做个图文参考,后来 star 的越来越多,竟然还有 fork 的 Σ(゚д゚;),属实把我吓到了。由于该仓库是我的(白嫖)github做笔记的仓库,所以里面的笔记良莠不齐,有很多写代码时随意记录的文档,所以被 fork 了感觉挺尴尬的,所以另开一个较小的仓库将鱼皮视频的笔记放进来,毕竟为了单独下载一个小小的 md 文档,属实没必要整个 fork 我那杂乱的笔记(如果要下载,对网速不好的同学来说更是一种煎熬)。
所以在这里将鱼皮视频的笔记加到了这个小仓库里,临时整合了我自己学习,人人都能学会的编程入门课 (geekbang.org)的学习笔记。我在胡船长代码的基础上进行了些微的整理与完善,使得代码完成度更高,并可以作为入门实践在github上在线运行,Gitpod在线运行mini_gtest效果。如有侵权请联系我删除。
同文件夹下的 github_note 中。传送门
比较粗糙,将就看看。具体 git 使用方法推荐阅读《GitHub入门与实践》。
可直接看鱼皮视频笔记。
高亮效果:
注意:这种方法仅能阅读,必须要下载后在本地 vscode 才能打开。
在线运行项目:在项目地址前加上gitpod.io/#/
前缀
https://gitpod.io/#/github.com/youhuangla/mini_gtest
用 github 登陆后
在 TERMINAL 处查看运行环境
在 TERMINAL 中输入
g++ gtest_test.cpp
./a.out