相关疑难解决方法(0)

教Google-Test如何打印Eigen Matrix

介绍

我正在使用Google的测试框架Google-Mock编写关于Eigen矩阵的测试,正如另一个问题中已经讨论的那样.

使用以下代码,我能够添加一个自定义Matcher以匹配给定精度的特征矩阵.

MATCHER_P2(EigenApproxEqual, expect, prec,
           std::string(negation ? "isn't" : "is") + " approx equal to" +
               ::testing::PrintToString(expect) + "\nwith precision " +
               ::testing::PrintToString(prec)) {
    return arg.isApprox(expect, prec);
}
Run Code Online (Sandbox Code Playgroud)

这样做是通过他们的isApprox方法比较两个特征矩阵,如果它们不匹配,Google-Mock将打印相应的错误消息,其中包含矩阵的预期值和实际值.或者,它应该至少......

问题

采取以下简单的测试用例:

TEST(EigenPrint, Simple) {
    Eigen::Matrix2d A, B;
    A << 0., 1., 2., 3.;
    B << 0., 2., 1., 3.;

    EXPECT_THAT(A, EigenApproxEqual(B, 1e-7));
}
Run Code Online (Sandbox Code Playgroud)

此测试将失败,因为A并且B不相等.不幸的是,相应的错误消息如下所示:

gtest_eigen_print.cpp:31: Failure
Value of: A
Expected: is approx equal to32-byte object <00-00 00-00 00-00 …
Run Code Online (Sandbox Code Playgroud)

c++ templates googletest eigen gmock

17
推荐指数
1
解决办法
3586
查看次数

标签 统计

c++ ×1

eigen ×1

gmock ×1

googletest ×1

templates ×1