📜  google test assert eq float - C++ (1)

📅  最后修改于: 2023-12-03 15:15:24.523000             🧑  作者: Mango

Google Test简介

Google Test是Google在2008年发布的C++测试框架,能够帮助C++程序员编写测试,并且能够提供高质量的测试代码。Google Test支持自定义断言、参数化测试、类型安全的测试等多种特性,其代码风格和使用方法也符合Google C++ Code Style。

AssertEQ断言

Google Test中的AssertEQ断言用于比较两个值是否相等,如果不相等,则输出提示信息并退出测试。

使用AssertEQ需要引用头文件gtest/gtest.h,并调用AssertEQ函数。例如:

#include <gtest/gtest.h>

TEST(MyTest, test_case_1)
{
    float a = 1.0;
    float b = 1.00001;
    ASSERT_EQ(a, b);
}

在上面的代码中,我们定义了一个test_case_1的测试用例,它比较了两个浮点数a和b的值是否相等。由于它们的值相差较小,因此期望这个测试用例能够通过。如果AssertEQ检测到a和b的值不相等,则会输出提示信息并退出测试。

浮点数比较

然而,在实际使用中,浮点数的比较可能会出现误差。例如,我们可以参考下面的代码:

#include <gtest/gtest.h>

TEST(MyTest, test_case_2)
{
    float a = 10.0 / 3.0;
    float b = 3.33333333;
    ASSERT_EQ(a, b);
}

在上面的代码中,我们定义了一个test_case_2的测试用例,它比较了10.0 / 3.0和3.33333333两个浮点数的值是否相等。然而,由于浮点数在计算过程中可能存在误差,因此这个测试用例实际上是无法通过的。

针对这种情况,Google Test提供了另外一个用于判断浮点数是否相等的断言:AssertFloatEq。例如:

#include <gtest/gtest.h>

TEST(MyTest, test_case_3)
{
    float a = 10.0 / 3.0;
    float b = 3.33333333;
    ASSERT_FLOAT_EQ(a, b);
}

在上面的代码中,我们使用ASSERT_FLOAT_EQ宏来比较两个浮点数的值是否相等,它会使用相对误差来判断两个数的差异是否可接受。

除了AssertEQ和AssertFloatEq之外,Google Test还提供了其他多种比较函数来判断不同类型的值是否相等。相关内容请参考Google Test的官方文档。