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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

测试——Gtest

發布時間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 测试——Gtest 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GoogleTest——Google C++單元測試框架(跨平臺)

  • gtest是開源工程的測試框架,不止針對特定的平臺,使用的范圍比較大,所以gtest的復用性和可移植性好。
  • 單元測試一般由測試人員完成,目的是隔離程序部件,并證明這個單個部件滿足預期 的功能
  • 提供了豐富的斷言、致命和非致命失敗判斷,能進行值參數化測試、類型參數化測試、“死亡測試;
  • 可以自動發現測試,斷言集,用戶定義的斷言,death測試,知名與非致命的失敗,類型參數化測試,各類運行測試的選項和XML的測試報告。

?

/A.cpp#include "A.h"A::A(int a){this->_a=a; } A::~A(){} void A::add(int a){this->_a+=a; } int A::getA(){return this->_a; }//test_A.cpp#include "A.h" #include <gtest/gtest.h>class A_test:public testing::Test{ protected:A* _p_a;//初始化函數virtual void SetUp(){this->_p_a = new A(1);}//清理函數virtual void TearDown(){delete this->_p_a;} };//第一個測試,參數A_test是上面的類, //第二個參數FirstAdd是測試名稱 TEST_F(A_test,FirstAdd){EXPECT_EQ(1,_p_a->getA());_p_a->add(3);EXPECT_EQ(1,_p_a->getA()); }//第二個測試 TEST_F(A_test,SecondAdd){EXPECT_EQ(1,_p_a->getA());_p_a->add(5);EXPECT_EQ(6,_p_a->getA()); }//上面兩個測試都是在SetUp函數執行后的狀態下執行, // 也就是說在執行任意一個TEST_F時 _p_a->_a的值都是初始值int main(int argc,char*argv[]){testing::InitGoogleTest(&argc,argv);return RUN_ALL_TESTS(); }

?

####Makefiletest:test_A.o A.og++ -g test_A.o A.o -o test \-I./gtest-1.8.0/include \-L./gtest-1.8.0/lib -lgtest -lgtest_main -lpthreadtest_A.o:test_A.cppg++ -g -c test_A.cpp -o test_A.o A.o:A.cppg++ -g -c A.cpp -o A.o.PHONY:clean clean:rm test

由結果可以看出,第一個測試點firstAdd是出現問題的,我們就在出錯的地方更改就可以解決問題。

這里的EXPECT_EQ是在比較傳入數據是否相等,不等就是失敗的返回。

同理,還有很多斷言方法。

布爾類型檢查

  • ?? ??? ?ASSERT_TRUE(condition)
  • ?? ??? ?ASSERT_FALSE(condition)

數值類型檢查

  • ?? ??? ?ASSERT_EQ(expected,actual);
  • ?? ??? ?ASSERT_NE(val1,val2);
  • ?? ??? ?ASSERT_LT(val1, val2);
  • ?? ??? ?ASSERT_LE(val1, val2);
  • ?? ??? ?ASSERT_GT(val1, val2);
  • ?? ??? ?ASSERT_GE(val1, val2);

?字符串檢查

?

  • ?? ??? ?ASSERT_STREQ(expected_str, actual_str);
  • ?? ??? ?ASSERT_STRNE(str1, str2);
  • ?? ??? ?ASSERT_STRCASEEQ(expected_str, actual_str);
  • ?? ??? ?ASSERT_STRCASENE(str1, str2);

?

?

總結

以上是生活随笔為你收集整理的测试——Gtest的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。