C 自己實現的乙個testSuite 框架

2021-08-01 08:28:10 字數 1518 閱讀 2116

前言

c++整合的unit test框架常用的是boost和cpptest,更多的是在測試語法對否。而我需要的單元測試是針對功能而言,旨在檢測該函式的計算結果是否正確。為了方便新增並維護後續的unit test,自己實現了乙個簡易的unit test框架。該框架主要有基類、派生類和suite類。基類是實現所有unit test 的共有操作,比如compare、print、readdata之類的操作;派生類則實現每個unit test的獨有操作run函式(為了方便suite類,該操作必須宣告成run函式);suite類相當於是乙個容器類,將派生類中的每個類都例項化後,並執行run操作,達到測試結果輸出的目的。下面在說明自己的test 框架前,先用乙個簡單例子說明一下該框架如何實現有效。

1、基類(需要在派生類中覆蓋的函式必須宣告成virtual虛函式)

2、派生類(過載基類的虛函式)

3、suite類(vector容器,例項化每乙個派生類,使其執行派生類過載的函式,而不是基類的虛函式)

先來看乙個關於訪問不到派生類自己的過載函式的錯誤例項:

#include using namespace std;

class a

return 0;

}

該執行結果是,print()函式呼叫的都是基類的print,【我是類a】,並不是我們的本意。vector容器中應是基型別的指標方可!

正確的例子:定義是指標型別的vector

#include using namespace std;

class a

return 0;

}

此時執行結果如下:【我是類b】【我是類b】【我是類b】

note: vector容器是指標型別時,push進去的應該是位址,而不是內容。

綜合suite類,該簡易的unit test框架可以簡單實現以下:

#include #include using namespace std;

class a

;void suite::run()

}int main(int argc, char* argv)

4、自己寫的乙個工程例子(待完善)

class suite ;

~suite()

; void run();

public:

std::vector*> utu8;

std::vector*> utu16;

};

void suite::run()

for(unsigned int i = 0; i < utu16.size();i++)

}

關於自己寫的這個suite類和singleton有什麼關係還待探索

乙個自己實現的string

最近實現了乙個string 類,新增了一些c 11 元素。除了基本的構造析構函式,拷貝構造和賦值函式,另外新增移動拷貝和賦值函式。default是乙個很方便的特性有木有。default constructor kianstring default kianstring const char c ch...

自己實現乙個Redux。

redux是乙個用於狀態管理的js框架,是flux架構的一種實現 如圖 reducer 為乙個使用者自定義的函式,在store分發 dispacth action時提供處理方法去更新狀態樹中的狀態。應該為乙個純函式。action 為乙個使用者自定義的物件,裡面包含乙個type屬性,標識乙個動作型別。...

C語言自己手動實現乙個棧

include include define stack init size 100 儲存空間的初始分配 define stack increment 10 儲存空間分配增量 typedef structstack void init stack stack s 構造乙個空棧 void destro...