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