[英]visual c++: #include files from other projects in the same solution
[英]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)都是可執行文件。 請注意,我們不會將單元測試分成單獨的解決方案。 它們始終與生產代碼一起構建和運行。 我喜歡這種結構有幾個原因:
無論您創建一個測試項目還是多個測試項目,我都絕對建議您將該項目置於與被測試代碼相同的解決方案中。 此外,我建議為測試項目設置一個構建后步驟,該步驟可以運行測試,如果測試不通過,則構建失敗。
最后,您可能想知道那個“ TestLib”項目。 我將其用於gtest / gmock融合源,main()的定義以及測試之間共享的任何其他實用程序。 這樣可以消除(或至少減少)各種測試項目之間的代碼重復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.