如何将 gtest 中的 return 值用于另一个测试
How to use a return value from a gtest to another test
我正在尝试通过 Google 测试框架测试 C++ 程序。
我的代码:
int addNumbers(int a, int b)
{
return a + b;
}
int subtractNumbers(int a, int b)
{
return a - b;
}
单元测试代码:
//first test
TEST(testMath, addTest1)
{
EXPECT_EQ(37, addNumbers(14, 23));
getchar();
}
//second test
TEST(testMath, subtractTest1)
{
EXPECT_EQ(25, subtractNumbers(37, 12));
getchar();
}
//third test
TEST(testMath, addTest2)
{
EXPECT_EQ(62, addNumbers(37, 25));
getchar();
}
但是,我需要以不同的方式进行单元测试。
我的期望: 我需要获取第一个测试的 return 值(结果)并在第二个测试中将其作为动态使用(如果第一个测试失败,则程序应终止并显示错误详细信息)。当第一个测试和第二个测试都正常(没有失败)时,那么第一个和第二个测试的 return 值应该被参数化到第三个测试。
所需算法(如您的帮助):
第 1 步:运行 第一次测试 addNumbers(14, 23)
;
第 2 步:检查预期值和 return 值(A);
步骤 3.1:如果测试失败,终止程序显示错误详情;
步骤 3.2:如果 OK(未失败),运行 第二次测试 subtractNumbers(A, 12)
;
第 4 步:检查预期值和 return 值(B);
步骤 5.1:如果测试失败,终止程序显示 OK 详细信息和 Error 详细信息;
步骤 5.2:如果 OK(未失败),运行 第三次测试 addNumbers(A,B)
;
第 6 步:检查预期值和 return 值;
步骤 7.1:如果测试失败,则终止程序显示 OK 详细信息和 Error 详细信息;
步骤 7.2:如果 OK,显示 OK 详细信息。
使用各种 ASSERT_*
宏将导致测试在失败时中止。您可以将 EXPECT_EQ
转换为 ASSERT_EQ
,然后将它们全部放在同一个 TEST()
.
中
TEST(testMath, testAll)
{
auto A = addNumbers(14, 23);
ASSERT_EQ(37, A);
auto B = subtractNumbers(A, 12)
ASSERT_EQ(25, B);
ASSERT_EQ(62, addNumbers(A, B));
}
我正在尝试通过 Google 测试框架测试 C++ 程序。
我的代码:
int addNumbers(int a, int b)
{
return a + b;
}
int subtractNumbers(int a, int b)
{
return a - b;
}
单元测试代码:
//first test
TEST(testMath, addTest1)
{
EXPECT_EQ(37, addNumbers(14, 23));
getchar();
}
//second test
TEST(testMath, subtractTest1)
{
EXPECT_EQ(25, subtractNumbers(37, 12));
getchar();
}
//third test
TEST(testMath, addTest2)
{
EXPECT_EQ(62, addNumbers(37, 25));
getchar();
}
但是,我需要以不同的方式进行单元测试。
我的期望: 我需要获取第一个测试的 return 值(结果)并在第二个测试中将其作为动态使用(如果第一个测试失败,则程序应终止并显示错误详细信息)。当第一个测试和第二个测试都正常(没有失败)时,那么第一个和第二个测试的 return 值应该被参数化到第三个测试。
所需算法(如您的帮助):
第 1 步:运行 第一次测试 addNumbers(14, 23)
;
第 2 步:检查预期值和 return 值(A);
步骤 3.1:如果测试失败,终止程序显示错误详情;
步骤 3.2:如果 OK(未失败),运行 第二次测试 subtractNumbers(A, 12)
;
第 4 步:检查预期值和 return 值(B);
步骤 5.1:如果测试失败,终止程序显示 OK 详细信息和 Error 详细信息;
步骤 5.2:如果 OK(未失败),运行 第三次测试 addNumbers(A,B)
;
第 6 步:检查预期值和 return 值;
步骤 7.1:如果测试失败,则终止程序显示 OK 详细信息和 Error 详细信息;
步骤 7.2:如果 OK,显示 OK 详细信息。
使用各种 ASSERT_*
宏将导致测试在失败时中止。您可以将 EXPECT_EQ
转换为 ASSERT_EQ
,然后将它们全部放在同一个 TEST()
.
TEST(testMath, testAll)
{
auto A = addNumbers(14, 23);
ASSERT_EQ(37, A);
auto B = subtractNumbers(A, 12)
ASSERT_EQ(25, B);
ASSERT_EQ(62, addNumbers(A, B));
}