我有幾個基於MFC的項目(DLL)。我想在裏面添加一些GTest/GMock測試。動態DLL負載和谷歌測試
我需要用最少的efford做這樣馬的計劃是:
- 附加測試文件到每個庫,並將其鏈接對gmock.lib
準備一份動態加載所需的一個可執行文件以最小的主DLL()是這樣的:
int main(int argc, char** argv) { LoadLibrary(argv[1]); testing::InitGoogleMock(&argc, argv); const int status = RUN_ALL_TESTS(); return status; }
的問題是,從裝載的庫測試是不可見的米y exe文件(dll被加載並確認初始化)。輸出是:
[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (0 ms total)
[ PASSED ] 0 tests.
這似乎我應該以某種方式從dll文件引入測試到exe但我找不到任何信息。 我的方法好嗎?或者也許還有其他簡單的方法?
感謝您的回答。你的解決方案有一些缺點:1.Dll由數千個類和函數組成,我不能使它們全部可見,所以在exe文件中的測試可以使用它們全部。 2.爲每個DLL在Visual Studio中製作單獨的exe項目可能不是正確的方法。在dll中進行測試對我來說很好,因爲測試在發佈版本中根本不會編譯。 –
@MichałWalenciak1.我確實知道這是這種情況,我已經編輯了我的答案,以便單元測試在DLL內部。 2.我不打算建議你爲每個DLL分別製作一個exe文件。但是,這從我的回答中並不清楚,所以我明白你爲什麼認爲我在暗示它。我還編輯了答案的這一部分以清楚地說明問題。 –
@MichałWalenciak請注意一件事。我明白在DLL中保持單元測試是最好的方法,但是總是在調試模式下運行測試只會導致一些細微的錯誤漏洞。考慮不時在發佈模式下構建單元測試,並運行它們以確保安全。 –