深入探索 C++ 测试中的确认类型与改进方向
1. 确认类型拓展
在测试过程中,我们常常会对指针进行解引用操作,而非直接将指针传递给宏。这意味着测试本质上是在测试布尔值,所以有时添加此类测试并非必要。
字符串字面量在源代码中十分常见,它是表示预期字符串值的便捷方式。但需注意,字符串字面量并非真正的字符串,而是指向常量字符的指针。我们不能像对布尔指针那样直接对字符串字面量指针进行解引用,因为这样只会得到单个字符,而我们需要确认的是整个字符串。
以下是一个展示字符串字面量主要用法的测试示例:
TEST("Test string and string literal confirms")
{
std::string result = "abc";
CONFIRM("abc", result);
}
此测试能够正常工作,是因为传递给确认函数的参数类型中有一个是 std::string
。尽管编译器未找到两个参数的精确匹配,但由于其中一个是字符串,它会将字符串字面量也转换为字符串。
然而,当我们尝试确认两个字符串字面量(预期值和实际值均为字符串字面量)时,就会遇到问题。编译器会将它们视为两个指针,而不清楚应将它们都转换为字符串。不过,这种情况在测试中并不常见。若确实需要比较两个字符串字面量,在确认前将其中一个包装为 std::string
类型即可。
2. 浮点值确认难题
在基础层面,确认操作通常是通过比较预期值和实际值来进行的,若两者不同