从Google Test 官方文档中得知,TEST()并不是函数,而是用来生成函数的宏。
Use the TEST() macro to define and name a test function. These are ordinary C++ functions that don't return a value.
从这句话来看,这些宏是属于 C++宏系统的。
Unfortunately, the C++ macro system does not allow us to create a single macro that can handle both types of tests. Using the wrong macro causes a compiler error.
但是搜索「 C++ 宏」,找到的内容都是关于用#define
定义宏的,#define
是预处理处理器的一种,又被称为「宏」。
但是这个也没有用#define
,而且语法也不太对。
这是怎么回事呢?有谁知道?
1
ysc3839 2020-09-30 22:59:23 +08:00 1
感觉是初学 C++?建议先把基础学好再去研究更复杂的东西。
至于这个问题,TEST 是 Google Test 定义的宏,所以你去搜索“C++ 宏”找不到 Google Test 相关的内容。 |
2
Mindjet OP @ysc3839 #1
那就好,宏是 Google Test 定义的,这个已经猜到了,谢谢你提供信息,这下证明猜测是基本正确的。 这个宏有没有利用 C++机制? 是完全由 Google Test 处理的,还是与 C++本身的机制有关? |
3
Mindjet OP |
4
AkideLiu 2020-10-02 16:21:31 +08:00 via iPhone
同时小白,不懂原理,就是写个 test case 用用
|
5
Mindjet OP |
6
Mindjet OP @AkideLiu #4
这是目前我的一些猜测,不一定对 ### Google Test 中的宏 子专题 #### 重名问题 为什么可以允许相同的宏名(在.cpp 中定义大量 TEST 宏),这不是容易混淆吗? 由于宏的参数并没有类型,所以重载好像也无从谈起。 我的理解是这个,宏是由`Google Test`自带的预处理器进行处理的,所以这是特殊的语法,`(A,B)`里面的 A 和 B 才是真正的名字。 `TEST`起到识别作用,类似于二维码角落里那几个黑色方块,本身不会用来做名字,所以不会有名称上的冲突。 #### TEST()宏被用来生成无返回值的测试函数 从 Google Test 官方文档中得知,TEST()并不是函数,而是用来生成函数的宏,生成的函数是没有返回值的测试用函数,TEST()为其提供具体的定义方式和函数的名称。 > Use the TEST() macro to define and name a test function. These are ordinary C++ functions that don't return a value. |
9
Mindjet OP 这是种很典型的场景,某个人觉得自己非常懂,但却没有提供任何有价值的信息能证明这一点。
有很大的可能性是,那个人正是这群人里面最不懂的。 他的不懂已经到了一种程度,就是他不知道自己不懂。 |
10
Mindjet OP 这算是比较厉害的装逼方法,因为永远不可能露馅,他提供的信息几乎为 0,可能比去寺庙里抽签获得的信息要多点。
|
11
AkideLiu 2020-10-03 01:55:34 +08:00
@Mindjet 兄弟很有研究精神,我觉得要想搞清楚需要研读一些 Gtest 的源码,毕竟 Gtest 相比别的 unit test framework 规模更加庞大。
|
13
learningman 2020-10-03 13:33:12 +08:00
@Mindjet 但是还有一种可能,人家懂,但是懒得说。
能给你提供一个学习路径已经很不错了,没有人有义务免费解答你的问题。 |
14
learningman 2020-10-03 13:34:24 +08:00
看你发过"真正阅读和使用《提问的智慧》"
建议再去看一遍 凭你这态度,人家知道人家也懒得理你 |
15
kimown 2020-10-03 14:01:51 +08:00 via Android
tset 里面的代码能调试吗
|
16
Mindjet OP @learningman #14
他没有义务免费回答我的问题,我也没有义务恭维蠢货。 因为这个回答不是我强求他给的,是他自己愿意的。 事实上他没有提供任何信息,也没有仔细的看上面的信息,他只提供了两个词儿,这两个词谁也知道。 所以我说这是很牛的装逼技巧,在任何地方都可以用,显得自己很牛似的。 它上面说的内容和如下的屁话本质上是完全一样的 「懂得都懂,不懂的说了也不懂,你也别问,利益牵扯太大,说了对你们没好处,我只能说水很深,网上的资料都删了,所以我只能说懂得都懂,不懂也没办法。」 |
17
Mindjet OP @learningman #14
我在原帖中提供了足够的信息,贴出了文档中的具体段落和搜索引擎的结果,并且给出了自己的推测,已经做了很多的工作,所以不存在《提问的智慧》上描述的那种情况。 反而是这个人没有提供任何的信息,提问要有智慧,不代表对什么破烂回复都要捧臭脚。 |
18
Mindjet OP |