c++ - 在 Google 测试失败输出消息中自定义实际/预期的 "Value of"字符串

标签 c++ googletest

我从 Google Test 得到以下输出单元测试:

UnitTests.cc:56: Failure
Value of: LineSegment2i(Vector2i(-10,0), Vector2i(-10,10)).toLine()
  Actual: 24-byte object <00-00 00-00 00-00 24-C0 00-00 00-00 00-00 00-00 00-00 2F-2B FF-7F 00-00>
Expected: Line(10, 3.14159265358979323846)
Which is: 24-byte object <00-00 00-00 00-00 24-40 18-2D 44-54 FB-21 09-40 00-00 64-00 00-00 00-00>
[  FAILED  ] LineSegmentTests.toLine (1 ms)

那个十六进制输出字符串不是很有用。有什么我可以添加到 Line 的吗?类(相等性测试失败)在这种情况下提供更多有用的错误?

有问题的类已经覆盖了 <<运算符作为成员函数:

std::ostream& operator<<(std::ostream& stream) const
{
  return stream << "Line (radius=" << d_radius << " theta=" << d_theta << ")";
}

您可以看到这适用于“预期”行,但不适用于“实际”行。 这种说法是不正确的——显示的测试来自 TEST 的参数。宏。

最佳答案

为了打印自定义类型,您可以“教”Google Test 如何打印您的自定义类型,如 Teaching Google Test How to Print Your Values 部分所述。 .

关于c++ - 在 Google 测试失败输出消息中自定义实际/预期的 "Value of"字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191004/

相关文章:

c++ - pthread 比没有线程慢

java - Trie 节省空间,但如何?

c++ - makefile:如何生成目标文件到上层目录

c++ - 声明所有虚拟方法以使用 gtest 进行模拟?

c++ - GoogleTest for Android NDK C++ with CMake

c++ - 如何使用模板方法避免循环依赖

c++ - 使用在 C++ 中输入索引的 lambda 初始化 vector

c++ - 如何检查成员方法是否被调用

c++ - 如何调用传递给 Mock 方法的函数指针?

c++ - GoogleTest 与 CppUnit : The facts