回答
试试这个(直接从谷歌测试文档...):
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