c++ - 在 GoogleTest 中使用 ASSERT 和 EXPECT

标签 c++ unit-testing googletest

虽然 ASSERT_* 宏会导致测试用例终止,但 EXPECT_* 宏会继续其评估。 我想知道哪个是决定是否使用其中一个的标准。

最佳答案

当条件 必须 成立时使用 ASSERT - 如果不成立,测试就停在那里。当测试的其余部分在没有此条件的情况下没有语义时,请使用此条件。

当条件应该成立时使用EXPECT,但在不成立的情况下,我们仍然可以从继续测试中获得值(value)。 (不过,测试最终还是会失败。)

经验法则是:默认使用 EXPECT,除非你要求为其余的测试保留一些东西,在这种情况下你应该使用 针对特定条件断言


这在 primer 中得到回应:

Usually EXPECT_* are preferred, as they allow more than one failures to be reported in a test. However, you should use ASSERT_* if it doesn't make sense to continue when the assertion in question fails.

关于c++ - 在 GoogleTest 中使用 ASSERT 和 EXPECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2565299/

相关文章:

c++ - 如何避免将 volatile 用于无锁程序?

java - 如何在一个 Eclipse 项目中为另一个 Eclipse 项目中的类编写测试?

java - 如何从具有多个属性的类中获取一个特定属性?

.net - 在 .NET YouTube GData API 中模拟对象

c++ - QNX Momentics : GoogleMock - Return has value, 函数返回无效错误

linux - 如何为 32 位嵌入式软件重新配置 Google Test?

c++ - gtest 仅当该方法在 .h 中实现时才检测该方法,而不是在 .cpp 中(cmake;问题发生在 "make"之后)

c++ - 使用 auto_ptr 时 *ptr 和 *ptr.get() 有什么区别?

c++ - 使用 for 循环并查找而不是 set_intersection?

c++ - 如何正确比较两个无符号字符?