Google 测试:如何 EXPECT_EQ 不可打印的 ASCII 值

Google Test: how to EXPECT_EQ non printable ASCII values

在我的测试中,我针对 'a'、'b' 等某些字符在 char 上设置了 EXPECT_EQ()...到目前为止还不错。

现在我应该针对不可打印的 ASCII 字符 (0xFE) 进行测试。我的角色定义为 'char',因此每次针对文字 0xFE 的直接测试都会失败!

char a;
a = 0xFE;
EXPECT_EQ(a, 0xFE);   <-- fail!!!

您正在将 254 分配给 char a。如您所知,char 的宽度足以容纳 它没有截断,但它超出了 char [0,127] 的正数范围。 它变为负数,整数值为 -2。因此它完全不等于 254 并且 EXPECT_EQ 失败。

所以,在那EXPECT_EQ中,你必须坚持与unsigned比较 a:

中的整数值
char a;
a = 0xFE;
EXPECT_EQ((unsigned char)a, 0xFE);