谷歌测试(gtest): ASSERT_PREDx和类成员函数
Google Test (gtest): ASSERT_PREDx and class member functions
好的,所以我使用gtest进行单元测试,我有一些我想做的事情:
class A {
/* Private members */
public:
bool function_to_test(int index);
}
在test函数中,我想使用:
A testEntity;
const int b = 40;
ASSERT_PRED1(testEntity.function_to_test, b);
这不起作用,因为ASSERT_PREDx
似乎是为全局作用域函数设计的。我得到了
argument of type ‘bool (A::)(int) {aka bool (A::)(int)}’ does not match ‘bool (A::*)(int)’
我想知道是否有一个好的工作围绕这个?我总是可以使用带有全局变量的函数,但我不确定是否有单行的方法。
ASSERT_PRED1(pred1, val1);
的第一个参数应该是一个可调用对象;一元函数或函子。
例如,如果你可以使用c++ 11 lambda,你可以这样做:
ASSERT_PRED1([&testEntity](int i) { return testEntity.function_to_test(i); }, b);
或者如果你想使用一元函数帮助器:
struct TesterA : public std::unary_function <int, bool> {
explicit TesterA(A& a) : a_(a) {}
bool operator()(int i) { return a_.function_to_test(i); }
A& a_;
};
ASSERT_PRED1(TesterA(testEntity), b);
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 助记符和指向成员语法的指针
- 用于访问容器<T>数据成员的正确 API
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 嵌套在类中时无法设置成员数据
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 将函数类成员映射到类本身内部
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- 多成员Constexpr结构初始化
- 我们可以访问一个不存在的联盟的成员吗