【unittest】GoogleTest(一)基本概念 断言 基本断言方法 二值比较 ASSERT_EQ()指针的指针相等。如果在两个C字符串上使用,它会测试它们是否在同一个内存位置,而不是它们具有相同的值。因此,如果你想比较C字符串(例如const char *)的值,使用ASSERT_STREQ(),稍后将会描述。特别地,要断言C字符串为NULL,请使用...
本文对Google Test的各种断言整理. 从官网翻译整理. 布尔断言 FatalNonfatal说明 ASSERT_TRUE(condition)EXPECT_TRUE(condition)断言 condition 为 true ASSERT_FALSE(condition)EXPECT_FALSE(condition)断言 condition 为 false 二进制断言 FatalNonfatal说明
ASSERT_EQ(Position(0, 0, NORTH), robot.getPosition()); } 重写SetUp/TearDown时,缺乏Override的保护 Google Test通过在子类中改写Setup/TearDown来定制Fixture的功能,但程序员往往易于混淆setUp, Setup, SetUp, set_up,尤其在C\+\+98中,由于缺失override的编译时保护,易于让程序员写出违背原意的逻辑代码,这...
ASSERT_THROW(Foo(5), bar_exception); EXPECT_NO_THROW({ intn = 5; Bar(&n); }); 适用于: Linux, Windows, Mac; since version 1.1.0. 谓语断言 尽管Google Test 有一系列丰富的断言,但它们永远不会足够,因为不可能(也不是好主意)去预计用户可能遇到的所有情况。因此,有时用户会使用EXPECT_TRUE()...
ASSERT_*# 会抛出致命失败故障的断言,断言失败时中止当前测试函数的运行(不是中断整个TEST)。 Copy ASSERT_EQ(x.size(),y.size()) <<"x与y的大小不相同" EXPECT_*# 会抛出非致命失败故障的断言,不会停止当前函数运行,而是继续往下运行下去 Copy
Google Test 1. 自定义错误输出: ASSERT_EQ(x.size(), y.size()) << "Vectors x and y are of unequal length"; for (int i = 0; i < x.size(); ++i) { EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i; ...
详细的分析可以见《Google Test(GTest)使用方法和源码解析——结果统计机制分析》。 类型对比断言 该类断言只有一个::testing::StaticAssertTypeEq<T, T>()。当类型相同时,它不会执行任何内容。如果不同则会引起编译错误。但是需要注意的是,要使代码触发编译器推导类型,否则也会发生编译错误。如 代码语言:...
如果要比较值的话,使用ASSERT_STREQ(), 如果判断C字符串是否是NULL,使用ASSERT_STREQ(NULL, c_string)。 如果比较string,那么使用ASSERT_EQ。 5.字符串比较 在这里,比较的是C风格的字符串,如果想要比较string对象,请使用EXPECT_EQ、 EXPECT_NE等,而不是下面的。
GoogleTest 提供 EXPECT_* 和 ASSERT_* 两种类型的宏,用于判断代码是否按照预期执行。EXPECT 只产生普通错误,ASSERT 产生严重错误。 EXPECT 和 ASSERT 两种宏,都支持 << 输出字符串 -- 失败时输出日志。 比如我们编写如下测试用例 #include <gtest/gtest.h> TEST(SimpleTest, Expect) { EXPECT_EQ(1, 1); EX...
TEST_F(QueueTest,IsEmptyInitially){EXPECT_EQ(q0_.size(),0);}TEST_F(QueueTest,DequeueWorks){int*n=q0_.Dequeue();EXPECT_EQ(n,nullptr);n=q1_.Dequeue();ASSERT_NE(n,nullptr);EXPECT_EQ(*n,1);EXPECT_EQ(q1_.size(),0);deleten;n=q2_.Dequeue();ASSERT_NE(n,nullptr);EXPECT_EQ(*n...