运行结果如下图所示,代码中的TEST是一个宏,用来创建测试用例,它有test_case_name和test_name两个参数。分别是测试用例名和测试名,在后面的文章中我们会对其有更深刻的理解,这里就不细说了。RUN_ALL_TESTS也是一个宏,它是测试用例的入口。EXPECT_EQ这个是一个断言相关的宏,用来检测两个数值是否相等。 相关视频推...
EXPECT_STREQ("CoderZh", strCoderZh.c_str()); EXPECT_STREQ(L"CoderZh", wstrCoderZh.c_str()); } 六、显示返回成功或失败 直接返回成功:SUCCEED(); 返回失败: TEST(ExplicitTest, Demo) { ADD_FAILURE()<<"Sorry";//None Fatal Asserton,继续往下执行。 //FAIL();//Fatal Assertion,不往下执行...
TEST 是一个宏,有两个参数,googtest对其解释为:test_case_name,test_name。 EXPECT_TRUE,见字知义,用来比较所传递的参数是否返回true。类似的有EXPECT_FALSE。 另:googletest还包装了另一个宏 ASSERT_*, 与EXPECT_* 的区别是: ASSERT_*版本的断言失败时会产生致命失败,并结束当前函数,后面的语句将不会执行。
EXPECT_EQ(add(1,2), 2); std::cout << "add function end" << std::endl; std::cout << "sub function start" << std::endl; EXPECT_EQ(sub(1,2), -1); std::cout << "sub function end" << std::endl; std::cout << "--- test_expect end---" << std::endl; } TEST(tes...
该类断言用于直接标记是否成功或者失败。可以使用SUCCEED()宏标记成功,使用FAIL()宏标记致命错误(同ASSERT_*),ADD_FAILURE()宏标记非致命错误(同EXPECT_*)。举个例子 代码语言:javascript 复制 if(Check){SUCCEED();}else{FAIL();} 我们直接在自己的判断下设置断言。这儿有个地方需要说一下,SUCCEED()宏会调用GT...
断言其实之前接触过:assert()。googletest要比这个功能多一些。 断言成对出现,它们测试相同的东西,但对当前函数有不同的影响。 ASSERT_* 版本在失败时产生致命失败,并中止当前函数。 EXPECT_* 版本生成非致命失败,它不会中止当前函数。通常首选EXPECT_* ,因为它们允许在测试中报告一个以上的失败。但是,如果在有问题...
EXPECT_STREQ(L"CoderZh", wstrCoderZh.c_str()); } 六、显示返回成功或失败 直接返回成功:SUCCEED(); 返回失败: TEST(ExplicitTest, Demo) { ADD_FAILURE()<<"Sorry";//None Fatal Asserton,继续往下执行。 //FAIL();//Fatal Assertion,不往下执行该案例。
如果违反该规则,则可能不会立即产生后果,但是测试可能(仅仅是可能)会因新的编译器(或您正在使用的新版本的编译器)或新版本的googletest而中断。 因此,最好遵循该规则。 为什么googletest支持EXPECT_EQ(NULL,ptr)和ASSERT_EQ(NULL,ptr)但不支持EXPECT_NE(NULL,ptr)和ASSERT_NE(NULL,ptr)?
到期望结果的比对过程中,用于判断是否满足预期的断言宏。它是Google Test(一个C++测试框架)提供的一种断言方法,用于在单元测试中对函数的输出结果进行验证。 Google Test Expe...
我们来看下EXPECT_DEATH的实现,其最终将调用到GTEST_DEATH_TEST_宏中 代码语言:javascript 复制 # define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ const ::testing::internal::RE& gtest_regex = (regex); ...