如何在谷歌测试中强制正确预期和实际的顺序

How to force correct order of expected and actual in Google Test?

本文关键字:顺序 谷歌 测试      更新时间:2023-10-16

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)

如果其他开发人员正在阅读您的测试,他应该依靠您

过去正确完成测试。