Tal*_*anL 4 c++ unit-testing googletest
我正在使用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)));
}
Run Code Online (Sandbox Code Playgroud)
这样做的好处在于,对于不匹配项,它报告比较的值,例如5!= 7,但不报告索引变量“ x”。有什么方法可以在检测到不匹配时轻松输出索引变量?
小智 6
在https://github.com/google/googletest/blob/master/googletest/docs/primer.md中:
“要提供自定义失败消息,只需使用<<操作符或此类操作符序列将其流式传输到宏中即可。”
因此,如果您想输出等于期望值的索引,则可以执行以下操作:
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;
Run Code Online (Sandbox Code Playgroud)