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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 有些時候,我們不僅要測試類暴露出來的公有方法,還要測試其受保護的或者私有方法。GTest測試框架提供了一種方法,讓我們可以測試類的私有方法。但是這是一種侵入式的,會破壞原來代碼的結構,所以我覺得還是謹慎使用。(轉載請指明出于breaksoftware的csdn博客)

? ? ? ? 我們先看個例子

// This class has a private member we want to test.  We will test it
// both in a TEST and in a TEST_F.
class Foo {public:Foo() {}private:int Bar() const { return 1; }// Declares the friend tests that can access the private member// Bar().FRIEND_TEST(FRIEND_TEST_Test, TEST);FRIEND_TEST(FRIEND_TEST_Test2, TEST_F);
};// Tests that the FRIEND_TEST declaration allows a TEST to access a
// class's private members.  This should compile.
TEST(FRIEND_TEST_Test, TEST) {ASSERT_EQ(1, Foo().Bar());
}// The fixture needed to test using FRIEND_TEST with TEST_F.
class FRIEND_TEST_Test2 : public Test {protected:Foo foo;
};// Tests that the FRIEND_TEST declaration allows a TEST_F to access a
// class's private members.  This should compile.
TEST_F(FRIEND_TEST_Test2, TEST_F) {ASSERT_EQ(1, foo.Bar());
}

? ? ? ? Foo類擁有一個名叫Bar的私有成員函數。我們需要通過FRIEND_TEST宏來新增該類的友元類(其實也能想象出來,就是通過友元類來訪問私有成員,所以這是一種侵入式的——修改了原來類的結構)

#define FRIEND_TEST(test_case_name, test_name)\
friend class test_case_name##_##test_name##_Test

? ? ? ? 上例中給了兩種訪問私有變量的方式:

  1. 一種是FRIEND_TEST(FRIEND_TEST_Test, TEST);聲明的類,然后通過TEST(FRIEND_TEST_Test, TEST)實現測試特例實體,于是該實體中需要使用Foo的構造函數構造一個對象,然后調用其私有的Bar方法。
  2. 一種是FRIEND_TEST(FRIEND_TEST_Test2, TEST_F);聲明的類。它使用到了Test Fixtures技術(詳見《Google Test(GTest)使用方法和源碼解析——預處理技術分析和應用》)。在FRIEND_TEST_Test2類中,聲明了一個Foo對象。然后TEST_F(FRIEND_TEST_Test2, TEST_F)類直接使用了該成員變量調用Bar方法。TEST_F(FRIEND_TEST_Test2, TEST_F)既繼承于FRIEND_TEST_Test2,又是Foo的友元類。

? ? ? ? 這塊技術沒有什么深奧的,大家只要是知道它是通過友元特性實現,是一種侵入式測試就行了。

總結

以上是生活随笔為你收集整理的Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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