原創|使用教程|編輯:鄭恭琳|2020-05-18 16:47:06.160|閱讀 1033 次
概述:C/C++test 2020.1的更新引入了將C/C++test與CMake集成在一起以進行靜態分析和單元測試的功能。這篇文章重點介紹如何在基于CMake的項目中使用Parasoft C/C++test進行單元測試。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
C/C++test 2020.1的更新引入了將C/C++test與CMake集成在一起以進行靜態分析和單元測試的功能。這篇文章重點介紹如何在基于CMake的項目中使用Parasoft C/C++test進行單元測試。(查看結合使用Parasoft C/C++test和CMake進行靜態分析)
單元測試要集成到開發過程中要比靜態分析要復雜得多。最后,必須創建可執行二進制文件。對于由多個庫和可執行文件組成的大型項目而言,這尤其成問題。
我們用于靜態分析的compile-info JSON文件還不夠。它沒有提供有關項目結構的重要信息-哪些文件包含在哪些二進制文件中,以及哪些文件應一起進行測試。
將單元測試集成到基于Cmake的項目中
為了使Parasoft C/C++test單元測試輕松集成到基于CMake的項目中,2020.1版本引入了CMake擴展,該擴展允許定義C/C++test的單元測試目標。這些目標會自動生成C/C++test項目文件,這些文件可用于創建,運行和維護單元測試。
此擴展旨在使用戶能夠定義Parasoft C/C++test單元測試所需的整個基礎架構,以及其在CMake配置文件中的常規目標。
讓我們使用一個基于C/C++test Professional的示例(基于Eclipse的工具)來查看其工作原理,該工具具有豐富的UI。:
按照這些步驟
在C/C++test Professional的主安裝目錄中,您可以找到帶有示例的CMake擴展。請參閱以下目錄:
對于我們的實驗,我建議將integration/cmake文件夾從安裝中復制到您的首選位置。該示例的結構如下所示:
app文件夾包含“可執行”目標。具有三個子文件夾(mod1,mod2和mod3)的modules文件夾表示用于鏈接可執行文件的靜態庫。另外,cmake文件夾包含CMake的C/C++test擴展。您可能需要將此文件夾復制到實際項目中才能使用此擴展名。
這種簡化的結構描繪了團隊嘗試實施單元測試工作時面臨的典型挑戰:如何將整個項目分為可測試的塊,代表邏輯上屬于同一組的文件。
在大多數情況下,開發人員將不希望針對通過編譯整個項目中的所有文件而創建的一個Blob二進制文件執行單元測試。用戶很可能會對在項目中定義的相同二進制目標(可執行文件和庫)添加測試用例感興趣。
如何為項目中定義的相同二進制目標添加測試用例
在討論配置語法的詳細信息之前,讓我們使用提供的示例了解其工作方式。
1.在app文件夾所在的頂級目錄中,創建一個構建目錄,cd進入該目錄,并調用生成腳本,如下所示:
2.使用生成腳本(makefile)生成CMake之后,調用make生成示例項目:
3.啟動C/C++test專業版(安裝文件夾中的cpptest可執行文件)。選擇一個空的工作區,使用“文件菜單->導入...->現有項目到工作區”,然后選擇“根目錄”作為復制示例的主文件夾。向導將遞歸掃描選定的文件夾,并找到所有自動生成的項目。如果您看到類似下面的內容,則可以單擊“完成”。
Eclipse將導入所有項目,您將擁有一個新的工作區,可以進行單元測試。您無需執行任何其他操作即可開始添加和運行測試用例,并努力提高代碼覆蓋率。
4.在項目導航器中,選擇所有三個項目,右鍵單擊并使用“Parasoft-> Test Using->內置->單元測試->生成單元測試”測試配置自動生成測試用例。生成測試后,請從同一位置執行“運行單元測試”配置。
通過這四個簡單的步驟,您就為單元測試準備了項目基礎結構。現在,團隊已準備好開始處理測試用例。
它是如何工作的?
除了常規的構建目標外,CMakeLists.txt文件還包含單元測試目標。當使用cmake生成構建腳本時,也會自動生成C/C++test項目文件。稍后在構建過程中,會自動生成C/C++test項目所需的其他構建數據文件。
定義單元測試項目的結構所需的所有內容都保存在CMakeLists.txt文件中。該團隊不需要維護任何其他配置文件。一切都很好,干凈。可以檢出項目,生成腳本和C/C++test項目,可以將測試與源代碼一起添加和檢入,并且可以在CI中執行完整的測試。
近距離觀察
讓我們仔細看看C/C++test CMake擴展,以及它如何幫助定義測試項目基礎架構。 打開modules/mod1/CMakeLists.txt文件。您應該看到類似以下的內容:
在前六行中,您可以看到常規目標定義。在這里,我們定義了一個簡單的庫目標,其中包含一個源文件mod1.cpp和include文件目錄。 這就是您通常在CMake項目中看到的內容。
在第11行中,我們有了C/C++test擴展提供的新CMake函數。此功能允許您定義單元測試目標,該目標將生成所有必需的C/C++test項目文件。您可以在integrations/cmake/README.md中找到此功能的完整說明。在此特定示例中,完成以下操作:
這個簡單的目標定義足以為Parasoft C/C++test生成單元測試項目。項目文件將在CMakeLists.txt文件的位置生成,這可能是最方便的。如果愿意,可以在源代碼樹之外生成項目文件,并避免任何合并問題。這顯示在app/CMakeLists.txt中:
有關更多詳細信息,請從
這是有關擴展的要點。
可以在以下目錄的C/C++test專業版安裝中找到CMake擴展:
要使用與C/C++test相關的擴展功能來啟用CMake,您將需要使用以下命令在CMakeLists.txt文件結構中包括該擴展:
您可以根據需要定義單元測試目標(這會影響C/C++test項目)。您可以為可執行文件、庫、庫的組合或文件的任意集合添加單元測試項目。
您需要確保所有必需的頭文件和庫都包含在目標定義中。CMake的常規規則在這里適用。如果包含該庫或選項,則在全局級別設置。然后它將被包含在您的單元測試目標中。如果您有任何特定于目標的設置,則需要添加它們。
如果要為現有二進制目標(如庫或可執行文件)添加單元測試目標,建議的過程是復制對原始目標完成的所有設置。、注意:您可以將整個目標添加到cpptest_add_executable函數,該函數會將所有源文件復制到新目標。
如果您不介意在源文件目錄中創建C/C++test項目文件,則這是最簡單且建議的設置。如果您希望將項目文件放置在源代碼樹之外的某個位置,則可以輕松實現。
您無需檢入生成的C/C++test項目文件(.project和.parasoft)。將為每個新版本重新創建它們。但是,您應該檢入所有測試用例和存根。
(查看結合使用Parasoft C/C++test和CMake進行靜態分析)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn