Google测试测试名称混淆

Google Test test name confusion

我真的很困惑 SquareTest 和 PosZeroNeg 在这个例子中代表什么。我希望它们是传递给函数的字符串,但它们不是?我是 c++ 的新手,所以我什至不确定要查找什么,因为我从未见过这样的东西。 CLion 将那些“可变字符串”显示为有效的 C++。谁能解释一下这是什么?

#include "gtest/gtest.h"
#include "Particle.h"

TEST (SquareTest /*test suite name*/, PosZeroNeg /*test name*/) {
    EXPECT_EQ (9.0, (3.0*2.0)); // fail, test continues
    ASSERT_EQ (0.0, (0.0));     // success
    ASSERT_EQ (9, (3)*(-3.0));  // fail, test interrupts
    ASSERT_EQ (-9, (-3)*(-3.0));// not executed due to the previous assert
}

TEST 是一个有两个参数的宏,宏生成测试用例 SquareTest.PosZeroNeg。它可能取决于一个实现,但在今天的这个特定示例中,SquareTest 命名为 class 和 PosZeroNeg 命名为(静态)class 方法,两者都是由宏,并且 SquareTest.PosZeroNeg 在使用时映射这些 class 和方法。由于第一个宏参数是class名称,第二个是方法名称,它们不是字符串,而是标识符,不能包含引号。