gtest如何測試private成員

2021-05-27 09:59:34 字數 647 閱讀 2266

最近在使用gtest,但有個問題,對私有成員無法訪問。

我了解到的比較流行的兩種做法是:

1. 將test class作為被測class的友元(friend);

2. 使用hack compiler的方法:#define private protected

兩種方法個有優缺點,下面簡單分析下:

這是一種compiler比較接受的方法,但是缺點是你在開發class時就得頂好test class的名字,把他加為friend,這樣,test class和被測class之間耦合太緊密。

而且被測class編譯後的目標**中始終留有test class的痕跡。

這種方法是我比較贊同的方法,被測class無需知道anything,與test class之間的耦合非常低。

具體做法是:

// test.cpp:

#define private public  // hack complier

#define protected public

#include "my_class.h" // all private/protected members now become public!

#undef private

#undef protected

gtest測試框架

gtest測試框架,搭建參考 2.進入 googletest 1.8.0 googletest 刪除不需要的檔案,完成後 sample目錄下只保留sample1 檔案,完成後make得到gtest.a和gtest main.a和testbin。gtest.a是不帶main函式的庫,需要自己寫用於測試...

gtest中如何跳出當前測試案例

在前面的 玩轉gtest 斷言中,我們提到了assert 系列的斷言只是在當前函式返回,並非退出當前測試案例,因為assert 系列是通過return來實現的 因此 assert 系列不能在返回值不為void的函式內出現 要退出當前測試案例,乙個最簡單的方法就是通過拋異常,然後讓gtest捕獲這一異...

gtest中如何跳出當前測試案例

在前面的 玩轉gtest 斷言中,我們提到了assert 系列的斷言只是在當前函式返回,並非退出當前測試案例,因為assert 系列是通過return來實現的 因此 assert 系列不能在返回值不為void的函式內出現 要退出當前測試案例,乙個最簡單的方法就是通過拋異常,然後讓gtest捕獲這一異...