2013-06-25 54 views
0

我只在以前的項目中使用過UnitTest ++。但我從來沒有不幸測試可執行文件/ ELF。我記得有人在stackoverflow上發佈了一些關於CppUnit的內容,但不記得了。單元測試可執行文件或ELF的CppUnit?

我的問題

我想使用的CppUnit測試.exe和的ELFs。單元測試就是我認爲的解決方案。

什麼,我認爲將是有益的

...我不知道....我根本沒有做任何的.exe/ELF在我生命中的單元測試。之前我已經做了敏捷的事情,但這是一場全新的球賽。我很感激任何人都有這方面的經驗。

回答

0

CppUnit是一個自動化單元測試框架,而不是自動化系統測試。

系統測試正是它的名字所暗示的。從用戶的角度來看,所有代碼模塊都是作爲一個完整的系統進行測試。自動化系統測試是當您從測試工具中練習整個系統時,爲其提供特定的用戶輸入並測試行爲和輸出如預期的那樣運行。

單元測試是關於從代碼的角度測試儘可能小的代碼單元,提供入口條件並聲明退出條件正確滿足。在最好的情況下,一個單元測試應該通過一個類的公共接口上的方法來實現一條路徑,而不依賴於難以提供的資源(如數據庫或服務)的外部依賴。單元測試是一種開發人員工具,用於測試模塊是否完成所有事情,完全按照它應該如何執行。這是一個非常詳細的測試方法,並不是從可執行的角度考慮的。

說了這麼多,你打算用CppUnit測試的代碼仍然需要鏈接才能執行。我們所做的是將我們的生產代碼編寫在一個項目中,並將我們的測試代碼寫入單獨的項目中。當我們構建時,生產代碼項目首先生成,將生產.CPP文件編譯爲.OBJ文件,然後將它們鏈接到PROD.DLL或PROD.EXE中(無論項目是否打算生成)。然後,我們構建測試項目,將測試.CPP文件編譯爲.OBJ文件。測試項目然後將測試.OBJ文件與之前編譯的生產.OBJ文件鏈接到TEST.EXE中。這樣我們的測試與用於創建實際生產代碼的相同的.OBJ文件相鏈接。然後,我們執行TEST.EXE並確保在構建完成之前測試沒有顯示任何錯誤。

+0

'@ JohnDeters'我有一個問題,我的一些客戶數據以.EXE,.OBJ和ELF格式存在。我需要將它們與我的內部模塊鏈接起來,並完成最終產品的集成。目前,我沒有記錄/確定測試這些客戶數據的意思。這就是我發佈這個問題的原因。你告訴我的是我已經做過的事情!關鍵問題是我們無法訪問源代碼。這就是爲什麼它更具挑戰性。我希望你能解決問題! – ha9u63ar

+1

@hagubear,我假設他們的代碼構成了一個你的代碼必須集成的API,並且你想確保他們保持合同的結束。您可以使用CppUnit以與測試自己的代碼相同的方式執行此操作。編寫一個測試用例來調用他們的API,並聲明他們的結果。將測試代碼與他們的.OBJ文件鏈接起來,產生一個TEST.EXE。如果他們有隱藏的依賴關係,你就會遇到問題,因爲你必須知道在測試開始時設置它們。您將使用白盒工具進行黑盒測試,但它仍然可以工作。 –