如何使用gtest的返回值到另一个测试

时间:2017-07-26 03:17:22

标签: c++ unit-testing googletest

我正试图通过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();
}

但是,我需要以不同的方式进行单元测试。

我的期望:我需要获取第一个测试的返回值(结果)并在第二个测试中将其用作动态(如果第一个测试失败,那么程序应该终止显示错误详情)。当第一次测试和第二次测试都没问题(未失败)时,第一次和第二次测试的返回值应参数化为第三次测试。

所需的算法(作为您的帮助):

第1步:运行第一次测试addNumbers(14, 23);

步骤2:检查预期值和返回值(A);

步骤3.1:如果测试失败,请终止显示错误详细信息的程序;

步骤3.2:如果确定(未失败),请运行第二次测试subtractNumbers(A, 12);

步骤4:检查预期值和返回值(B);

步骤5.1:如果测试失败,请终止显示OK详细信息和错误详细信息的程序;

步骤5.2:如果确定(未失败),请运行第三次测试addNumbers(A,B);

步骤6:检查预期值和返回值;

步骤7.1:如果测试失败,请终止显示OK详细信息和错误详细信息的程序;

步骤7.2:如果确定,请显示确定详细信息。

1 个答案:

答案 0 :(得分:0)

使用各种Traceback (most recent call last): File "C:/Users/Mathias/git/pdfconv/tests\test_converter.py", line 89, in test_convert_presentation2pdf_pptx pdfconv.converter.convert_presentation2pdf(input_path, output_path) File "c:\users\mathias\git\pdfconv\pdfconv\converter.py", line 116, in convert_presentation2pdf _convert_powerpoint2pdf(input_path, output_path) File "c:\users\mathias\git\pdfconv\pdfconv\converter.py", line 179, in _convert_powerpoint2pdf slides.SaveAs(output_path, FileFormat=PP_FORMAT_PDF) _ctypes.COMError: (-2147467259, 'Unbekannter Fehler', (u'Presentation (unknown member) : PowerPoint kann ^0 auf ^1 nicht speichern.', u'Microsoft PowerPoint 2013', u'', 0, None)) 宏将导致测试在失败时中止。您可以将ASSERT_*转换为EXPECT_EQ,然后将它们全部放在同一ASSERT_EQ内。

TEST()