参考:http://code.google.com/p/googletest/wiki/AdvancedGuide#Private_Class_Members
テスト対象ソースを汚す必要のない方法2の方が良いかな。
方法1 friendを使用する
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <string>
// テスト対象のクラス
class ClassPrivateMethod1
{
// テストフィクスチャをフレンドにする
friend class ClassPrivateMethodTest1;
private:
 // このprivateメンバ関数のテストをしたい 
 std::string foo() { return std::string("This is a private method!"); }
};
// テストフィクスチャ
class ClassPrivateMethodTest1 : public ::testing::Test
{
public:
 virtual void SetUp() {}
 virtual void TearDown() {}
 // privateメンバ関数へのアクセサ
 virtual std::string foo() { return c.foo(); }
 
protected:
 ClassPrivateMethod1 c;
};
TEST_F(ClassPrivateMethodTest1, accessPrivateMethod)
{
 // アクセサを使ってprivateメンバ関数のテストができた!
 EXPECT_STREQ("This is a private method!", foo().c_str());
}
方法2 FRIEND_TESTマクロを使用する
// テスト対象のクラス
class ClassPrivateMethod2
{
// 特定のテストケースをフレンドにする
FRIEND_TEST(ClassPrivateMethodTest2, accessPrivateMethod);
private:
 // このprivateメンバ関数のテストをしたい 
 std::string foo() { return std::string("This is a private method!"); }
};
TEST(ClassPrivateMethodTest2, accessPrivateMethod)
{
 ClassPrivateMethod2 c;
 EXPECT_STREQ("This is a private method!", c.foo().c_str());
}