我想通過谷歌測試框架來測試一個C++程序。如何使用從gtest返回值到另一個測試
我的代碼:
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();
}
但是,我需要我的單元測試是在一個不同的方式。我需要得到第一個測試的返回值(結果),並在第二個測試中用它作爲動態(如果第一個測試失敗,那麼程序應該終止顯示錯誤的詳細信息)。當第一次測試和第二次測試都OK(沒有失敗)時,第一次和第二次測試的返回值應該參數化爲第三次測試。
期望算法(如你的幫助):
第1步:第一次測試addNumbers(14, 23)
;
步驟2:檢查預期值和返回值(A);
步驟3.1:如果測試失敗,則終止該程序表示錯誤詳細信息;
步驟3.2:如果行(未失敗),運行第二測試subtractNumbers(A, 12)
;
步驟4:檢查預期值和返回值(B);
步驟5.1:如果測試失敗,則終止顯示行詳細信息和錯誤詳細信息的程序;
步驟5.2:如果行(未失敗),運行第三測試addNumbers(A,B)
;
第6步:檢查預期值和返回值;
步驟7.1:如果測試失敗,終止顯示OK詳細信息和錯誤信息的程序;
步驟7.2:如果確定,則顯示確定的詳細信息。
爲什麼你想停止測試的第一個錯誤?由於測試應該是獨立的,所有失敗的測試都允許一次修復多個測試。它與彙編相同,所有錯誤都比第一個IMO停下來要好。 – Jarod42
[OT]:您不應該在測試中使用'getchar()',如果您想暫停執行以進行調試,請使用* breakpoint *。 – Jarod42