c++ - 使用 GoogleTest 进行复合测试?

标签 c++ unit-testing googletest

如果我有类似的东西:

ASSERT_TRUE(RANGE(val1, val2, abs_err) || RANGE(val1, val3, abs_err));

我如何使用 ASSERT_NEAR 而不是 ASSERT_TRUE

我试图将语句分解为两个 ASSERT_NEAR 语句,如下所示,但测试失败。

ASSERT_NEAR(val1, val2, abs_err);
ASSERT_NEAR(val1, val3, abs_err);

最佳答案

您的用例是:这两个条件中的任何一个都应该为真。 所以使用 ::testing::AnyOf(m1,m2,...) !

匹配器世界中 ASSERT_NEAR(lhs,rhs,max_error) 的等价物是 ::testing::DoubleNear(rhs,max_error) - 因此您的示例将如下所示:

ASSERT_THAT(val1, AnyOf(DoubleNear(val2, abs_err),
                        DoubleNear(val3, abs_err)));

如果您需要两个条件都为真 - 使用 ::testing::AllOf - 实际上您的尝试等同于 AllOf - 这就是它失败的原因。

关于c++ - 使用 GoogleTest 进行复合测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663629/

相关文章:

c++ - LNK2019问题

node.js - 在 Node 中模拟构造函数

c++ - 从googletest中的派生夹具派生夹具

c++ - GoogleTest SetArgReferee 与 vector <unique_ptr>

c++ - GoogleTest 枚举类在 Visual Studio 2012 中不起作用

c++ - 如何将子类 vector 传递给需要基类 vector 的函数

c++ - BOOST_FOREACH : What is the error on using this of a STL container?

c++ - 从 C++ 程序创建 XML 文件

PHPUnit模拟抽象类的所有方法

javascript - 代码覆盖率 - 消除误报