回答
試試這個(直接從谷歌測試文檔...):
FRIEND_TEST(TestCaseName, TestName);
例如:
// foo.h
#include <gtest/gtest_prod.h>
// Defines FRIEND_TEST.
class Foo {
...
private:
FRIEND_TEST(FooTest, BarReturnsZeroOnNull);
int Bar(void* x);
};
// foo_test.cc
...
TEST(FooTest, BarReturnsZeroOnNull) {
Foo foo;
EXPECT_EQ(0, foo.Bar(NULL));
// Uses Foo's private member Bar().
}
我知道這是舊的,但我今天搜索了相同的答案。 「gtest_prod.h」只是引入了一個簡單的宏來引用測試類。
#define FRIEND_TEST(test_case_name, test_name)\
friend class test_case_name##_##test_name##_Test
所以FRIEND_TEST(FooTest, BarReturnsZeroOnNull);
等同於:
friend class FooTest_BarReturnsZeroOnNull_Test;
這工作,因爲每個測試是在以前的答覆中提到自己的類。
@DaveRuske請不要在編輯中解釋你的編輯。這是編輯總結的目的。如果問題是6個字符的限制,您可以在主體的某個地方添加一個''(''是註釋,因此不會顯示)。 – 2017-04-18 17:06:05
更好的策略是不允許在單元測試中進行朋友測試。
允許朋友測試訪問私人成員將導致難以維護的代碼庫。只要組件的內部實現細節被重構就會中斷的測試不是你想要的。如果需要額外的努力來獲得一個可以通過其公共接口來測試組件的設計,那麼只要更新組件的公共接口,就會得到只需要更新的測試。
依賴於gtest/gtest_prod.h
的測試應該被視爲設計不佳的標誌。
我知道這是有爭議的(希望它爲你贏得了某種「有爭議的答案」徽章
- 1. 谷歌測試 - 上課前
- 2. 你應該能夠在課堂上定義一個朋友嗎?
- 3. 朋友課對我不好?
- 4. 在朋友的課堂中包含頭文件
- 5. 我的朋友們如何測試我的Android應用程序?
- 6. 從谷歌課堂課程獲取課程
- 7. 如何在我的主課堂中使用我的第二堂課?
- 8. 谷歌課堂課程中的「部分」字段是什麼?
- 9. 有兩類,上課時如何使用下課堂對象?
- 10. Graph-Traversal:我如何使用Gremlin查詢「朋友和朋友的朋友」
- 11. 我如何選擇課堂?
- 12. 403禁止錯誤而獲取課程列表谷歌課堂
- 13. 如何才能得到谷歌加iphone的共同朋友sdk
- 14. 如何在課堂上使用線程?
- 15. PostgreSQL的:朋友的朋友,但我的那些朋友們
- 16. 如何使課堂真實?
- 17. 如何獲得朋友的朋友的朋友...
- 18. 僅測試中型課堂上的公共方法?
- 19. 如何獲得我朋友的FB朋友的數量?
- 20. iPhone的朋友,測試設備
- 21. 如何查找與我分享其谷歌緯度位置的朋友列表?
- 22. 如何從課堂外找回CSLA物業的友好名稱?
- 23. 隱藏課堂上的RNG
- 24. 如何使用谷歌測試/模擬測試基於MFC CWnd的類?
- 25. 如何獲得使用活動記錄的朋友的朋友?
- 26. 如何在我的課堂上提高字符串的性能?
- 27. 在Ruby中。我如何從課堂內部自我定義中提到課堂?
- 28. 朋友用戶+共同的朋友的測試與其他用戶
- 29. 我的課堂如何表現得像一個靜態課程?
- 30. 如何測試許多用戶/朋友的Facebook應用程序?
如果我有另一個測試例如BarReturnsOneOnSth,那麼怎麼辦?我是否還需要爲該測試添加另一個FRIEND_TEST聲明? – pajton 2010-03-07 13:41:03
是的。每個考試在技術上都是一門課程,你需要一次一個朋友。 – hobbit 2010-03-07 13:48:57
我怎樣才能做到這一點,並不強迫我在頭文件中加入googletest頭文件,類爲'Foo'? – 2011-12-12 17:07:31