我正在使用gtest,但我是gtest的新手。我想在复杂数据结构的两个std :: vector中进行值的比较。我想做这样的事情:
ASSERT_EQ(a.size(), b.size());
for (int x = 0; x < a.size(); x++) {
EXPECT_EQ(
sqrt(pow(a.real[x], 2) + pow(a.imag[x], 2)),
sqrt(pow(b.real[x], 2) + pow(b.imag[x], 2)));
}
这很好,因为不匹配会报告比较的值,例如: 5!= 7,但它不报告索引变量“x”。有没有什么方法可以在检测到不匹配时轻松输出索引变量?
答案 0 :(得分:4)
来自https://github.com/google/googletest/blob/master/googletest/docs/primer.md:
“要提供自定义失败消息,只需使用&lt;&lt;运算符或一系列此类运算符将其流式传输到宏中。”
因此,如果您想输出索引所期望的值,那么您可以执行以下操作:
EXPECT_EQ(
sqrt(pow(a.real[x], 2) + pow(a.imag[x], 2)),
sqrt(pow(b.real[x], 2) + pow(b.imag[x], 2))) << "x is : " << x << std::endl;