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