Утечка Google на EXPECT_CALL даже с виртуальным деструктором - PullRequest
0 голосов
/ 26 июня 2019

В этом тесте я получаю утечку памяти, которая, по-видимому, вызвана EXPECT_CALL, поскольку удаление этой строки -

EXPECT_CALL(*AMock_, method(_,_);

устраняет утечку.

Вотtest:

TEST_F(Test, testing)
{
    auto AMock_ = std::make_unique<AMock>();

    EXPECT_CALL(*AMock_, method(_,_).Times(AtLeast(1));
    AMock_->init(NUMROW, NUMCOL);

    EXPECT_TRUE(Mock::VerifyAndClearExpectations(AMock_.get()));
}

Вот макет:

#include <gmock/gmock.h>
#include "BaseB.h"

class AMock: public BaseB
{
public:
MOCK_METHOD2(method, void(int row, int col));
};

и класс BaseB:

class BaseB: public BaseA
{
public:
    BaseB();
    virtual ~BaseB();
    virtual void init(int row, int col);
};

void BaseB::init(int row, int col)
{
   int x = row / 2;
   int y = col / 5;
   method(x, y);
   //codes codes codes..
}

, который был получен из BaseA:

class BaseA
{
public:
    BaseA();
    virtual ~BaseA();

    virtual void method(int param1, int param2);
};

Базовые классы макета (BaseB и BaseA) уже имеют виртуальные деструкторы, поэтому я не уверен, что не так.Помогите!

...