2009-01-29 110 views
6

我是一名專業的網頁開發人員,因此我習慣於使用非常高級的腳本語言和測試工具。我個人最近一直在與C一起工作,併爲基於Unix的系統編寫許多C程序來完成各種任務。然而,我仍然沒有進入單元測試這個代碼的良好溝槽,我想知道C程序員使用什麼工具來創建自動化測試來驗證代碼。你用什麼來單元測試C代碼?

+0

另請參閱此問題:http://stackoverflow.com/questions/65820/unit-testing-c-code。 – MattK 2009-01-29 22:27:09

+0

這是我一直在尋找的問題,但搜索並沒有真正找到它。謝謝! – Mitchell 2009-01-29 22:40:55

回答

1

您是嚴格測試C代碼,還是可以混入一些C++?如果C++沒問題,cppunit可能值得檢查。如果你正在測試一個庫,你可以簡單地將你的庫鏈接到你的單元測試應用程序。如果您正在測試應用程序,則可能必須創建一個庫,然後將其鏈接到您的應用程序和單元測試應用程序。

1

我有這個問題一次,發現CUnit。我只用它來做一個小項目,但看起來沒問題。幾乎不像我習慣的JUnit或NUnit一樣方便!對於C++項目,我使用cppunit,它工作得很好。

1

CUtest。它非常整齊。小,不依賴於生成器語言,快...不喜歡什麼?

0

如果你只想要一個quick'n'dirty測試機制,看看ANSI C的

1

assert宏,一部分考慮使用CppUTest。它是用C++編寫的,但隱藏了C++,因此C程序員可以忽略C++。

Unity是一個C-only測試線束,也很好。它使用紅寶石來生成測試跑步者。

我會保持清楚CppUnit。它需要C++知識,每個測試都必須單獨安裝。

詹姆斯

1

我作爲開發工作,我喜歡使用CMocka工具爲C語言提供了單元測試。 它是基於GTest的簡單工具(主要是C++單元測試),它非常容易理解。 前段時間我做了最好的和最簡單的測試工具的研究,並決定這一點。

經過一段時間的工作,我非常有信心。使用預處理指令

#define MyFunction(iEntry) mock_MyFunction(iEntry) 

你也可以切斷要模擬的任何功能(甚至基本的Windows功能與sizeof(),malloc()和等)。

完成這一步之後,您只需創建您的模擬函數(mock_MyFunction(iEntry)),將它們包含到您的項目中並模擬它們的行爲。首選的方法是在調用它們應返回之前設置它們的一些值(will_return_always(mock_MyFunction,5))。並且,當調用此函數時,它將始終返回值5.

此外,您完全可以避免使用C++語言並繼續使用純C語言。 不知道CMocka的簡單索引網站。你必須深入該網站和工具API找到你需要的.. :) 還檢查this爲使用CMocka的小教程...

我希望這可以幫助,有一個愉快的一天..:-)

相關問題