使用 gtest 給 DLL 工程編寫單元測試

2021-07-04 15:53:27 字數 678 閱讀 9488

任何時候給你的**增加單元測試(或介面測試)都不晚,對於 c/c++ 使用比較廣泛的單元測試框架應該非 googletest莫屬了。

通常在工程**中,使用 gtest 比較廣泛的方式是以 lib 的形式來做單元測試,這種方式使用也比較簡單直接,本文就不再贅述。

但是,對於大部分工程**而言,並不是只有 exe 檔案,通常這些 exe 檔案都會依賴至少乙個 dll 檔案,同時這些 dll 檔案並不會匯出所有函式或類,而僅匯出極少的東西給外部使用。(注:本文僅討論 gtest 在 windows 上的應用)

那麼,問題來了,該如何使用 gtest 對 dll 裡沒有匯出的函式或類做單元測試呢?

做為示例,假設整個 solution 包含如下三個 project:

詳細的**示例及工程屬性設定請閱讀完整的示例**。

為了使用 gtest 對 dll 裡沒有匯出的函式或類進行單元測試,或許會有如下兩種方法:

第一種方式的問題就是容易出現各種檔案路徑不對的問題,甚至有的時候需要修改產品**的標頭檔案;

第二種方式就沒有那麼多問題了,但是需要注意的是,對工程屬性的設定一定要正確,下文詳細介紹。

在編寫 gtest dll 和使用 gtest dll 時需要設定工程屬性,特別強調如下:

總結:在工程中以 gtest dll 的形式來編寫單元測試就是這樣的,重要的也容易出錯的地方就是工程屬性的設定。

dll 檔案編寫和使用

1.基本概念 dll dynamic link library 動態鏈結庫,是微軟實現共享函式庫的一種方式。動態鏈結,就是把一些常用的函式 製作成dll檔案,當某個程式呼叫到dll中的某個函式的時候,windows系統才把dll載入到記憶體中。也就是說當程式需要的時候才鏈結dll,所以是動態鏈結。動...

C 編寫DLL檔案給易語言呼叫

摸索了兩天了,終於解決了所有問題,在此跟大家分享。需要三個檔案,dll demo.h dll demo.cpp dll dome.def 直接上 標頭檔案如下 1 ifndef dll demo h 2 define dll demo h 3 ifdef dlldemo exports 4 defi...

VC 使用 MinGW編寫的dll

參考文章 因為對ia32彙編格式不熟悉 所以寫了一些用c內嵌gnu彙編的 來獲取cpu的資訊,想用vc來做介面,c函式用mingw在windows平台編譯,完事遇到乙個問題,gcc編譯出來的dll檔案vc無法識別,於是昨天晚上和今天下午都在查詢資料,下面是我整理來的,不知道這樣用合不合適啊,不合適你...