首先,您必須指定您需要的。要做到這一點的方式是通過定義接口類:
class SpecialFunctionsNotifier
{
public:
virtual ~SpecialFunctionsNotifier() {}
virtual void construct() = 0;
virtual void destruct() = 0;
virtual void copyConstruct() = 0;
virtual void copyAssign() = 0;
};
所以,你可以讓「默認」空(意思是空的)對象FPGA實現:
class SpecialFunctionsNullNotifier : public SpecialFunctionsNotifier
{
public:
virtual void construct() override {}
virtual void destruct() override {}
virtual void copyConstruct() override {}
virtual void copyAssign() override {}
};
而且,有A
利用它:
class A
{
public:
static SpecialFunctionsNullNotifier m_calls_to_cons_default;
static SpecialFunctionsNotifier* m_calls_to_cons;
public:
A() { m_calls_to_cons->construct(); }
};
SpecialFunctionsNullNotifier A::m_calls_to_cons_default;
SpecialFunctionsNotifier* A::m_calls_to_cons = &A::m_calls_to_cons_default;
然後,嘲諷這是通知簡單的任務:
class SpecialFunctionsNotifierMock : public SpecialFunctionsNotifier
{
public:
MOCK_METHOD0(construct, void());
// ..
};
而且在測試中,以這種方式使用:
TEST(ACase, AConstructCount)
{
SpecialFunctionsNotifierMock callToConsMock;
A::m_calls_to_cons = &callToConsMock;
EXPECT_CALL(callToConsMock, construct()).Times(100);
A a[100];
// remember to cleanup
A::m_calls_to_cons = &A::m_calls_to_cons_default;
}
將是不錯的有負或接近票數一些解釋。謝謝。 – Yola
沒有downvote,但我很確定它與它只有兩個句子的事實有關,它不清楚你到底想要什麼。 gmock與計數ctor/dtor呼叫有什麼關係?請給出更多的上下文,以便我們更好地理解。 –
這不是一件容易的事情,真的取決於你的用例。我的意思是,您需要使用一些「解決方法」來進行此計數 - 但您可以使用哪種解決方法取決於您的使用情況。請指定那些對象 - 本地,從工廠創建,注入什麼? – PiotrNycz