我最近开始使用googletest进行一些单元测试,并遇到了一种我不了解的情况。测试失败,但看起来一切都会通过。

我有一个类似的小结构:

struct vec2 { float x, y; }

功能:
vec2 vec2_add_scalar (vec2 v, float scalar) {
    return {v.x + scalar, v.y + scalar};
}

和测试:
TEST (math_test, add_scalar) {
    vec2 v {4.0f, -4.0f};
    float s = 3.14f;

    vec2 r = vec2_add_scalar(v, s);

    EXPECT_EQ (7.14f, r.x);
    EXPECT_EQ (-0.86f, r.y);
}

运行测试时,这就是我得到的:
[ RUN      ] vector2_test.add_scalar
vec2_test.cpp: Failure
    Expected: 7.14
To be equal to: r.x
    Which is: 7.14

我不明白测试为什么会失败,希望能帮助您找出导致测试失败的原因。

最佳答案

正如您可能在googletest-AdvancedGuide中阅读的那样,建议使用ASSERT_FLOAT_EQ / ASSERT_DOUBLE_EQ ...

出于某种原因-请阅读以下SO帖子:Floating point inaccuracy examples

关于c++ - c++和gtest,需要帮助来理解为什么看似简单的测试失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37539455/

10-10 20:31