如何在谷歌测试中强制正确预期和实际的顺序
How to force correct order of expected and actual in Google Test?
Google 测试断言ASSERT_*
应该以ASSERT_EQ(expected, actual)
的形式使用,其中第一个参数是期望值,第二个参数是实际值。但是我经常在现有的代码库中看到这些参数被颠倒了,就像在这段代码中一样:
TEST(test, test)
{
ASSERT_EQ(foo(), 1);
}
这几乎没问题,但是在测试失败的情况下会产生一些奇怪的错误消息,例如:"foo()
的结果是预期的,但实际上是1
"。这似乎是一个小问题,但是有没有办法在编译时强制正确执行预期和实际顺序?
你可以使用来自谷歌模拟的Hamcrest匹配器:
ASSERT_THAT(foo(), Eq(1) );
这提高了参数的可读性和强制顺序。
对我来说,避免有线消息的最佳方法是从一开始就正确执行!
好吧,这对错误编写的现有测试没有帮助,但是在我所知道的所有单元测试框架(C#,Java,C++)中,它总是相同的:
ASSERT(EXPECTED, ACTUAL)
如果其他开发人员正在阅读您的测试,他应该依靠您
相关文章:
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 谷歌测试中的期望值存储在哪里
- 谷歌模拟和覆盖关键字
- 如何使用ESP8266向谷歌主页发送命令
- 更正 CMakeList.txt 用于谷歌测试的文件?
- 如何将GTest与CMake一起使用?遵循谷歌指南时的链接问题
- 在没有 API 的情况下使用谷歌翻译文本
- 重载运算符<<采用谷歌 C++ 风格
- 如何在谷歌模拟中匹配 C 样式数组
- 如何让谷歌测试正常运行。测试总是失败。(它不会编译)
- 为什么我收到来自谷歌的错误请求?
- 如何使用不同的谷歌模拟运行相同的谷歌测试用例?
- 谷歌测试方法与流
- _mm256_load_ps调试模式下导致谷歌/基准测试的分段错误
- 谷歌测试:模板模板的笛卡尔乘积的类型列表与模板
- C++ 谷歌测试除以零
- 谷歌风格指南(前向分枝部分)
- 如何使用谷歌基准测试对自定义界面进行基准测试
- 谷歌基准测试,如何只调用一次代码?
- 如何在谷歌测试中强制正确预期和实际的顺序