对于这个不完整的测试用例,我收到了内存泄漏报告。如果我通过“nameNameNameName”代替,则没有泄漏报告。
TEST_F (TestDoesExist, namePassedToCInterface)
{
Accessor accessor(_cInterface, _handle);
accessor.doesExist(std::string("nameNameNameName"));
}
被测代码如下所示:
virtual bool doesExist(const std::string& name)
{
bool result;
_cInterface.exists(_txHandle, name.c_str(), &result);
return result;
}
对C接口的调用模拟如下:
class MockDoesExist
{
public:
MockDoesExist() {
handle=Handle();
name = "";
result = true;
}
static void func(Handle _handle, const char* _name, bool* _result) {
// in values
handle = _handle;
name = _name;
// out values
*_result = result;
}
// in values
static Handle handle;
static std::string name;
// out values
static bool result;
};
Handle MockDoesExist::handle;
std::string MockDoesExist::name;
bool MockDoesExist::result;
我正在使用 VS 2010 express。
我有:
_CrtMemCheckpoint( &memAtStart );
在测试用例执行之前和:
_CrtMemDifference( &memDiff, &memAtStart, &memAtEnd)
后。
我究竟做错了什么?