この不完全なテスト ケースでメモリ リークが報告されています。代わりに「nameNameNameNam」を渡すと、リークの報告はありません。
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)
後。
私は何を間違っていますか?