簡體   English   中英

單元測試-如何進行?

[英]Unit Testing - How to go about it?

我想對程序進行單元測試(用C語言編寫),因為我也知道這樣做的好處,因為它表明了問題所在。

我還喜歡對黑匣子進行測試,因為它會告訴我該程序是否有效(至少對於測試而言)。

目前,我正在使用自動測試(Autoconf隨附),以便不添加依賴項。

在這一點上,我不太介意使用更好的框架,但是問題是我不想為黑盒測試和單元測試使用其他框架。 是否可以從單元測試框架運行黑盒測試? 我真正想要的是良好的日志輸出,確切地說出問題所在和出處。

我的另一個選擇是使用自動測試進行單元測試。 問題是沒有框架。 我編寫了一個小的“測試驅動程序”,它接受要測試的函數的名稱以及傳遞給該函數的參數,然后調用該函數。 問題是我不確定在斷言和輸出函數的返回值之間要使用什么邊界(出於日志記錄的目的,因為我喜歡自動測試將如何給我帶來差異)。 由於大多數函數都返回列表,因此使用帶有預期輸出的差異(使用自動測試展開)可以更快地進行准備。

是否可以從單元測試框架運行黑盒測試?

是的,您可以從單元測試中使用system()調用自動測試,然后對返回的值進行斷言。

但是我不建議這樣做,因為單元測試經常執行,因此它們應該非常快,即以秒為單位,而不是以分鍾為單位。

單元測試和集成測試(您稱為黑盒測試)具有不同的用途:單元測試驗證代碼中的單元 (無論是什么意思,功能或功能簇)按測試的預期工作,而集成測試覆蓋程序結尾-端,整體驗證。

因此,通常在代碼中每進行幾處更改后就進行單元測試,尤其是在應用TDD時,而集成測試是在添加功能后執行的。

我寧願有一個帶有斷言的典型的單元測試程序,以及一個集成套件,該套件可以在您的黑盒測試之外調用單元測試。

問題是我不確定在斷言和輸出函數的返回值之間要使用什么邊界(出於日志記錄的目的,因為我喜歡自動測試將如何給我帶來差異)。

使用斷言時,沒有任何輸出:期望值和實際值相等,什么也沒有發生,或者它們不相同,並且UT框架打印出錯誤消息(預期為X,實際為Y)。 那就是讓計算機來做測試的工作。

使用日志輸出diff時,仍然需要手動(直觀地)檢查diff的結果(例如:列表中是否缺少一項或其他項……)。

由於大多數函數都返回列表,因此使用帶有預期輸出的差異(使用自動測試展開)可以更快地進行准備。

您可能想編寫一個使用斷言比較列表的函數。

您可能需要使用CMake隨附的CTest,CMake是具有許多后端的跨平台制作系統: http : //www.cmake.org/Wiki/CMake#CTest

PS:CMake也比自動工具強大得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM