google開源了很多實用的模組,比如google-gtest/google-gmock/google-glog/google-gflags/google-ctemplate/google-sparsehash/protobuf/perftools,gtest是c++的測試模組,提供豐富的測試方法
軟體單元測試常用的有cppunit, c++test,提供白盒功能的測試,gtest同樣是提供單元測試,諾西開源的robot framework測試,只是用來測configuration,運用在版本提交到測試部之前,每次rd人員提交到robot的時候,可以採用gtest來做自身完整測試,不僅測試配置,而且測試業務看收發包是否正常,下圖是乙個eci的測試簡圖
1、 gtest編譯
單執行緒除錯工程gtest.sln和多執行緒除錯工程gtest-md.sln,不同工程生成的lib也不同,路徑分別為gtest\msvc\gtest\debug\gtestd.lib, gtest\msvc\gtest-md\debug\gtestd.lib
debug和release不同編譯方式下,生成debug版本的gtest靜態庫(gtestd.lib)和release版本的gtest靜態庫(gtest.lib).
2、 寫gtest測試用例
header路徑:
lib路徑:
runtime library模式: 如果release版本,設為/mt,如果debug版本,設為/mtd
含有下面幾個測試用例
3、 測試用例:test******
這種用例最簡單,就是函式的測試,下面測試函式入參(4,10),(30,18),返回值為2和6
#include
int foop(inta, int b)
int c=a%b;
if(c==0)
returnfoop(b,c);
}test(fooptest,handlenonezeroinput)
{expect_eq(2, foop(4, 10));
expect_eq(6, foop(30, 18));
int main(intargc, char* argv)
{testing::initgoogletest(&argc, argv);
returnrun_all_tests();
4、 測試用例:testglobal
類似於初始化函式,下面例子是初始化corba,只在整個測試過程中執行一次。
class corbaenvironment: public testing::environment
public:
virtual void setup()
std::cout << " corbaenvironment setup" << std::endl;
corba_init("127.0.0.1","7777");
virtual void teardown()
std::cout << " corbaenvironment teardown" << std::endl;
int main(intargc, char* argv)
{testing::addglobaltestenvironment(newcorbaenvironment);
testing::initgoogletest(&argc, argv);
returnrun_all_tests();
5、 測試用例:testsuite
這種用例是testsuite方式,比如qinq業務的epl,evpl-uni2uni,evpl-uni2nni,evlan等等,每種業務就理解為乙個class,同一種業務發的不同測試報文為乙個function
1.setuptestcase() 方法在當前類第乙個case之前執行
2.teardowntestcase() 方法在當前類最後乙個case之後執行
/* simulate nms, configurate differnet vpn*/
class epl_ety2ety : public testing::test
protected:
static void setuptestcase()
/*create epl */
static void teardowntestcase()
/*delete epl */
/* simulate ixia, send different pkts */
test_f(epl_ety2ety,ety_untagpkts)
/*send untag packets */
test_f(epl_ety2ety,ety_pritagpkts)
/*send pritag packets */
test_f(epl_ety2ety,ety_tagpkts)
/*send tag packets */
int main(intargc, char* argv)
{testing::addglobaltestenvironment(new corbaenvironment);
testing::initgoogletest(&argc, argv);
return run_all_tests();
6、 測試用例:testcase
和testsuite不同的是,testcase對當前類所有case都執行,下面例子是用來處理mpls_ety2mplsnni,每個測試case都有動作
1. setup()方法在當前類每個case之前執行
2. teardown()方法在當前類每個case之後執行
class mpls_ety2mplsnni : publictesting::test
protected:
virtual void setup()
virtual void teardown()
test_f(mpls_ety2mplsnni, ety_untagpkts)
/*send untag packets */
int main(intargc, char* argv)
{testing::addglobaltestenvironment(new corbaenvironment);
testing::initgoogletest(&argc, argv);
returnrun_all_tests();
7、 測試用例:引數化
按照前面測試方法test******,foop需要複製很多個,利用引數化之後,就定義取值範圍即可,eci暫時沒用到
Qt使用Google Test 單元測試
場景 對qt程式測試 說明 google test環境搭建,看我部落格 google test 的使用,這裡不再重複說明。實現步驟 1 新增qt庫目錄,在qt的安裝目錄,我安裝的是在盤c下 專案屬性 c c 常規 附加包含目錄 新增路徑 c qt include c qt include qt c ...
用googletest寫單元測試
reference 對於稍微複雜些的測試用例,例如需要共享資料 class chashtabletest public testing test virtual void setup virtual void teardown chashtable ht string key1 string key...
單元測試 單元測試文章收藏
前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...