谷歌测试框架允许未定义的参数进行测试
undefined arguments to TEST allowed with google test framework
当使用谷歌测试框架时,我可以编译以下代码,尽管有空的未定义符号作为参数传递给TEST。
#include <gtest/gtest.h>
TEST(faketestfixture,faketestname){
ASSERT_EQ(1,1);
}
int main(int argc, char** argv){
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}
为什么/如何编译?他们用什么魔法?
我开始偷看源头,但很快意识到我超出了我的深度,甚至不知道从哪里开始。
TEST
是一个预处理器宏,它不是标识符,TEST 宏只是将它们用作生成代码的构建块。在这种情况下,它使用名为 TestBody 的方法生成名为 faketestfixture_faketestname_Test 的类。该方法的实际主体是您在 TEST 宏调用后在大括号中提供的内容。因此,生成的代码大致如下所示:
class faketestfixture_faketestname_Test : public testing::Test {
public:
void TestBody();
// ... more stuff ...
}
void faketestfixture_faketestname_Test::TestBody() {
// This is the test body you supplied.
ASSERT_EQ(1,1);
}
所以这相对简单。真正的魔力在于如何将这一切连接在一起并被调用。:-)
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如果模板参数是另一个模板的实例化,则键入特征测试
- 在C++单元测试上下文中,抽象基类是否应将其他抽象基类作为函数参数
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- 如何将参数传递给Google基准测试程序
- GoogleTest 中的参数化测试无法按预期工作
- 如何在 gtest 中参数化测试组?
- C++ Catch 是否有类似 NUnit 的测试用例的东西,具有多个参数/输入选项
- 按类型参数进行GTEST滤波器测试
- 如何每次使用不同的参数多次测试方法
- 如何测试模板参数 T 的 std::函数<T>是否可构造
- GTEST-不同类型的参数化测试
- 为模板类创建GTEST值参数化测试
- 使用 googletest 在类型参数化测试中标识使用的基类
- GTEST - 参数化测试限制,编译错误
- 使用谷歌模拟测试C++时无法推断模板参数
- C 单元测试框架具有类型和值参数化
- 谷歌测试参数化的高级使用
- 输出结果时如何将参数化测试合并为一个
- 分配参数用于测试目的