簡體   English   中英

GoogleTest在同一解決方案中幾個C ++項目

[英]GoogleTest several C++ projects in the same solution

我在解決方案SolA有10個C ++項目,並希望通過GoogleTest對其進行單元測試:

所以我創建了一個新的解決方案SolATest並為每個項目SolA在單元測試項目SolATest

加載隱含在SolATest / Projects中的SolA庫並將每個測試項目作為可執行文件運行是一種好方法:

#include <iostream>
#include "gmock/gmock.h"
#include "gtest/gtest.h"

int main(int argc, char **argv) 
{   
    ::testing::InitGoogleMock(&argc, argv); 
    int value = RUN_ALL_TESTS();

    std::getchar(); // to hold the terminal open

    return value;
}

還是有一種更方便的方法->例如,在SolATest只有一個可執行文件,然后將其他測試項目作為庫加載(恕我直言,將一個測試項目中的所有cpp文件都混淆了)?

感謝任何幫助

兩種方法都應該起作用; 這取決於您的喜好。 我傾向於遵循以下項目結構:

Solution
 |-- ProjectA 
 |-- ProjectATests
 |-- ProjectB
 |-- ProjectBTests
 `-- TestLib

項目(ProjectA,ProjectB)是庫,而每個測試項目(ProjectATests,ProjectBTests)都是可執行文件。 請注意,我們不會將單元測試分成單獨的解決方案。 它們始終與生產代碼一起構建和運行。 我喜歡這種結構有幾個原因:

  1. 僅運行與您的更改相關的測試會更容易。
  2. 開發工作流程效率更高一點,因為對一個庫進行更改時,您只需重建並鏈接相應的測試即可。

無論您創建一個測試項目還是多個測試項目,我都絕對建議您將該項目置於與被測試代碼相同的解決方案中。 此外,我建議為測試項目設置一個構建后步驟,該步驟可以運行測試,如果測試不通過,則構建失敗。

最后,您可能想知道那個“ TestLib”項目。 我將其用於gtest / gmock融合源,main()的定義以及測試之間共享的任何其他實用程序。 這樣可以消除(或至少減少)各種測試項目之間的代碼重復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM