日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

[C++]在Visual Studio 2010中使用Google Test - 配置

發(fā)布時(shí)間:2023/12/2 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [C++]在Visual Studio 2010中使用Google Test - 配置 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我主要是想使用單元測(cè)試,VS2010是有自己的單元測(cè)試的,雖然我不抵觸Microsoft的東西,但是自己做的非工業(yè)級(jí)的東西,去用Microsoft的解決方案是找罪受~所以使用了Google的測(cè)試方案。主要查閱了國(guó)外的一篇資料,雖然那位寫得實(shí)在簡(jiǎn)略,但寫得還是不錯(cuò)的,我補(bǔ)充梳理了一下。

下載部署GTest

首先去下載Google Test,網(wǎng)址為http://code.google.com/p/googletest/。我寫此文的時(shí)候是1.6版。
解壓之,因?yàn)橐磸?fù)使用,所以最好放到固定的目錄。我解壓到了D:\Selah\VSProjects\Source下。打開解壓后的目錄,結(jié)構(gòu)如下:

其中要接觸的目錄有:

../ - 即D:\Selah\VSProjects\Source\gtest-1.6.0,我把它設(shè)置為$(GTest),這樣就不用每次寫一長(zhǎng)串路徑了。
include - 包含目錄,里邊有頭文件,測(cè)試時(shí)要用到。
msvc - Visual Studio的項(xiàng)目工程文件,已經(jīng)配置好了的,用它生成二進(jìn)制庫(kù)。

運(yùn)行msvc下的gtest.sln文件,它會(huì)提示自動(dòng)升級(jí)為新的解決方案,然后生成即可。記得Debug和Release都要生成,分別用于測(cè)試Debug和Release方案的代碼。我使用的是以下4個(gè)文件,還可以使用另外一個(gè).sln文件,請(qǐng)自行文檔之~

msvc\gtest\Debug - Debug方案下的二進(jìn)制文件:gtestd.libgtest_maind.lib(注意主文件名的d后綴)
msvc\gtest\Release - Release方案下的二進(jìn)制文件:gtest.libgtest_main.lib

Solution配置

為了讓測(cè)試和程序運(yùn)行互不干擾,老外將待測(cè)試模塊和程序入口分離為兩個(gè)項(xiàng)目,這樣程序和GTest都可以訪問(wèn)待測(cè)試模塊,互不沖突。最簡(jiǎn)單的情況下,Solution下有3個(gè)Project:

BaseCode - 待測(cè)試模塊。我是要做單元測(cè)試的,所以頭文件里要包含信息。(比如你要測(cè)試void Foo(),起碼要在頭文件里Declare一下吧~)
RunBaseCode - 程序入口。就是將程序一分為二為兩部分。程序入口調(diào)用BaseCode生成的模塊,實(shí)現(xiàn)程序功能。
TestBaseCode - 測(cè)試程序。這個(gè)是書寫GTest測(cè)試用例的Project。除了要調(diào)用BaseCode生成的模塊(否則你測(cè)試個(gè)毛線啊)。并且,他還要調(diào)用GTest的模塊(否則你用毛線測(cè)試啊)。

另外就是路徑問(wèn)題,為了簡(jiǎn)便,我把路徑寫成了宏。宏保存在項(xiàng)目屬性表里,這個(gè)表除了可以保存宏,還能保存后邊提到的路徑,可以備份了下次直接用。

具體過(guò)程不說(shuō)了,這圖一看就懂吧,之后就可以使用$(GTest)代替那長(zhǎng)串路徑了。

?

Project - BaseCode配置

Debug/Release通用:

項(xiàng)目屬性 - 配置屬性 - 常規(guī): 配置類型 = 靜態(tài)庫(kù)(.lib)。你也可以用動(dòng)態(tài)庫(kù),不過(guò)要或重新編譯GTest,具體文檔之~靜態(tài)庫(kù)很好的,不要看不起他。

Debug:

項(xiàng)目屬性 - 配置屬性 - C/C++ - 代碼生成: 運(yùn)行庫(kù) = 多線程調(diào)試(/MTd)。如果不這么做,結(jié)果就是報(bào)錯(cuò)~

Release:

項(xiàng)目屬性 - 配置屬性 - C/C++ - 代碼生成: 運(yùn)行庫(kù) = 多線程(/MT)。如果不這么做,結(jié)果就是報(bào)錯(cuò)~

?

Project - RunBaseCode配置:

因?yàn)橐{(diào)用BaseCode的lib,所以配置一下項(xiàng)目依賴項(xiàng)(依賴BaseCode)。要不然,BaseCode還沒(méi)生成呢,就開始生成RunBaseCode,結(jié)果只能是報(bào)錯(cuò)。

Debug/Release通用:

項(xiàng)目屬性 - 通用屬性 - 框架和引用: 添加對(duì)BaseCode的引用。感覺(jué)和.Net的程序集引用有點(diǎn)像。如果不這么干(比如對(duì)此有很深的厭惡之情),可以配置附加庫(kù)路徑以及附加依賴項(xiàng)(配置TestBaseCode時(shí)有介紹)。

項(xiàng)目屬性 - 配置屬性 - C/C++ - 常規(guī): 附加包含目錄 += $(SolutionDir)\BaseCode。其實(shí)是可有可無(wú),如果設(shè)置了,引用頭文件可以使用:

#include <BaseCode.h>

否則,就只能使用相對(duì)或者絕對(duì)路徑了:

#include "../BaseCode/BaseCode.h

Project - TestBaseCode配置

除了和RunBaseCode相同的配置外(因?yàn)樗惨{(diào)用BaseCode.lib,重復(fù)工作我不寫了),還要進(jìn)行如下配置。

Debug/Release通用:

項(xiàng)目屬性 - 配置屬性 - C/C++ - 常規(guī): 附加包含目錄 += $(GTest)\include。這樣方便包含GTest的頭文件。
項(xiàng)目屬性 - 配置屬性 - 連接器 - 常規(guī): 附加庫(kù)目錄 += $(GTest)\msvc\gtest\$(IntDir)。如果之前沒(méi)有引用BaseCode,要在這里做類似設(shè)置。

Debug:

項(xiàng)目屬性 - 配置屬性 - C/C++ - 代碼生成: 運(yùn)行庫(kù) = 多線程調(diào)試(/MTd)。如果不這么做,結(jié)果就是報(bào)錯(cuò)~(和BaseCode的設(shè)置相同)
項(xiàng)目屬性 - 配置屬性 - 連接器 - 常規(guī): 附加依賴項(xiàng) += gtestd.lib;gtest_maind.lib。如果之前沒(méi)有引用BaseCode,要在這里做類似設(shè)置。

Release:

項(xiàng)目屬性 - 配置屬性 - C/C++ - 代碼生成: 運(yùn)行庫(kù) = 多線程(/MT)。如果不這么做,結(jié)果就是報(bào)錯(cuò)~(和BaseCode的設(shè)置相同)
項(xiàng)目屬性 - 配置屬性 - 連接器 - 常規(guī): 附加依賴項(xiàng) += gtest.lib;gtest_main.lib

生成即測(cè)試

老外果然有思路。這樣配置了TestBaseCode,就不用執(zhí)行它了,每次生成解決方案,就會(huì)自動(dòng)執(zhí)行測(cè)試。

項(xiàng)目屬性 - 配置屬性 - 生成事件 - 后期生成事件: 命令行 = $(TargetDir)$(TargetFileName)。效果:

如果執(zhí)行測(cè)試的exe文件,會(huì)一閃而過(guò),可以放到cmd里邊執(zhí)行。效果還是不錯(cuò)的。Over~~

總結(jié)

以上是生活随笔為你收集整理的[C++]在Visual Studio 2010中使用Google Test - 配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。