【发布时间】:2022-07-27 00:05:51
【问题描述】:
我刚学google test,我有一个class,想测试一下它的成员函数,下面是demo代码:
class B {
//......
};
class A {
public:
//.....
void add (string s, B* ptrb) { m.insert(s, ptrb); }
void remove(string s) {
auto it = m.find(s);
if (it != m.end())
m.erase(it);
}
B* operator[](string s)
{
auto it = m.find(s);
if (it != m.end())
return (*it).second;
}
//.....
protected:
map<B*> m;
//.....
}
如果我想像这样测试add:
class mygtest : public ::testing::Test
{
protected:
//....setup
//....teardown
A a;
};
TEST_F(mygtest, testadd)
{
B b1;
B b2;
a.add("1", &b1);
a.add("2", &b2);
//...how should i do next?
EXPECT_EQ(.....) //compare with who?
}
这是第一个问题。
第二个问题是:
在某些情况下,我必须先调用另一个成员函数来获取值,然后使用EXPECT_EQ来测试当前成员函数,如何在不使用其他成员函数的情况下测试一个函数?有必要吗?
【问题讨论】:
-
旁白:不要害怕
->运算符用于指针或迭代器。我觉得it->second比(*it).second更具可读性,也更容易打字。
标签: c++ googletest googlemock