c++單元測試框架之gtest

搞了3個禮拜的單元測試了,把最近所學所用的東西記錄一下,順便爲公司接下來要做的單元測試培訓做下背書。

首先什麼是單元測試。

在面向對象編程中,通常一個類會承擔一個單一的職責,所以我們可以用類來劃分單元。單元測試,就是針對項目中的各個類進行測試。它側重於發現單元內部的邏輯錯誤,屬於白盒測試的範疇。

單元測試強調以下幾點:

語句覆蓋:選擇足夠的測試數據,使得代碼的每個語句都至少被執行一次。

判定覆蓋:選擇足夠的測試數據,使得程序的每個判定條件都至少出現一次真值和一次假值。

條件覆蓋:使得每一個判斷語句的每個邏輯條件可能的值至少出現一次。

條件組合覆蓋:即當一個判定條件由多個條件組合二成時,使得每個條件的各種可能的組合都出現一次。

數據覆蓋:即用盡可能多的數據傳入接口中進行測試。

單元測試入口。

在c++中,任何程序都需要main函數,gtest同理,下面是單元測試的入口main。

#include <gtest/gtest.h>

int main(int argc,char **argv)
{
    test::InitGoogleTest(&argc,argv);    //初始化gtest
    return RUN_ALL_TESTS();    //運行程序中所有的測試用例
}

測試用例編寫。

首先我們得有一個接口:

int sum(int a,int b)
{
    sum = a + b;
    if(sum > 100)
        return 100;

    return sum;
}

測試用例:

TEST(calculate,test_sum)
{
    EXPECT_EQ(8,sum(5,3));
    EXPECT_EQ(100,sum(60,40));
    EXPECT_EQ(100,sum(150,50));
}

EXPECT_EQ(expected,actual),這個斷言用來判斷actual與expected是否相等。expected是預期值,actual是實際值。

當二者相等時,測試通過。

就是這麼簡單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章