所以我喜歡並喜歡使用Google Test來參與我參與的C++項目。我只是提出了一個新的項目,它將是直線C(一個庫),目前爲止看不到任何即使它是一個C++框架,爲什麼不繼續使用Google Test。有一個C++編譯器可用不會是一個問題。Google測試是否可以測試C代碼?
爲什麼我不應該使用Google Test來測試直接的C代碼有特定的原因嗎?
謝謝。
所以我喜歡並喜歡使用Google Test來參與我參與的C++項目。我只是提出了一個新的項目,它將是直線C(一個庫),目前爲止看不到任何即使它是一個C++框架,爲什麼不繼續使用Google Test。有一個C++編譯器可用不會是一個問題。Google測試是否可以測試C代碼?
爲什麼我不應該使用Google Test來測試直接的C代碼有特定的原因嗎?
謝謝。
我無法命名一個。我想會有一些你在「普通」C中沒有的東西。例如,我認爲TestCase是從某個類派生的。但是在測試中,你可以測試任何你喜歡的東西,爲什麼不選擇C呢?
作爲所有Google的C++代碼,Google Test不會使用異常,所以異常安全流程不會成爲問題。只要你的頭文件是C++兼容的(不使用C++關鍵字,用正確的鏈接導出符號),它應該沒問題。
使用C++測試框架測試C代碼很常見,即使the leading book on the subject也採用這種方法。我過去廣泛使用googletest來單元測試C代碼,並可以推薦它。
我已經寫了一篇博客文章也可能是有用的: http://meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/
傑森, 意識到這一點! :D
正如Meekrosoft所說,是的,這是可能的。當我試圖這樣做時,我也使用了他的網站。它的工作原理,但有一個大問題:
GTest是反對導向的工具和C語言不是!
在例如,在GTEST你有很多的功能(全API的80%),這一請求對象作爲參數,例如:
EXPECT_CALL(turtle, PenDown()) // turtle is object(class) and PenDown() is method of that object
.Times(AtLeast(1));
從GTEST網站https://code.google.com/p/googlemock/wiki/ForDummies 所以你只需要使用宏像expect_equal,expect_bigger_than等...
我想建議你的工具CMocka(或其他一些C單元測試工具)。它也來自谷歌(由非谷歌開發人員組修改),它直接爲C語言創建。當我想測試C型源代碼時,我使用這個。
我希望這有助於.. :-)有一個愉快的一天.. :-)
EXPECT_CALL未在GoogleTest中定義,但在GoogleMock(一個模擬框架 - 不是單元測試框架)中定義。 GoogleTest定義了像EXPECT_EQ和EXPECT_TRUE這樣的宏,它們非常適合單元測試程序(非OO)代碼。我目前正在將它用於一個項目,並且它工作正常。 – weberc2 2015-03-14 18:08:42
我只是想我要補充另外一點:因爲GTEST是C++,你會下解析您的C頭文件測試爲C++。這意味着測試並不能保證頭文件可以從C使用。我最近用一個正在構建的C庫來解決這個問題。
我可以理解你爲什麼想這樣做,gtest是相當吝嗇的。很好的問題。 – 2011-05-14 10:37:14