我一直在試圖使用GoogleMock重寫底層類中的幾個特定方法,但是我似乎正在獲取基礎構造函數,而不是模擬對象。有什麼明顯的我在這裏失蹤?爲什麼GoogleMock嘲笑的原始方法仍然被調用?
我一直在關注下面的例子: http://blog.divebomb.org/2011/07/my-first-c-cmake-googletest-and-googlemock/
然而,在我的測試,我仍然得到我的所謂「printf的」。有什麼想法嗎?
下面是類/頭文件:
A.H:
#pragma once
class A
{
public:
virtual void methodToOverride();
void someConcreteMethod();
int mMemberVariable;
};
A.cpp:
#include "A.h"
void A::methodToOverride()
{
std::printf("Hello World");
}
void A::someConcreteMethod()
{
}
B.h:
#include "A.h"
class B
{
public:
B(A &injectedClass);
~B();
void MethodToTest();
private:
A mA;
};
B.cpp:
#include "B.h"
B::B(A & injectedClass):mA(injectedClass)
{
mA.someConcreteMethod();
}
B::~B(){}
void B::MethodToTest()
{
mA.methodToOverride();
}
MockA.h:
#include "A.h"
#include "gmock\gmock.h"
class MockA : public A
{
public:
MOCK_METHOD0(methodToOverride, void());
};
BTest.cpp:
#include "gtest/gtest.h"
#include "MockA.h"
#include "B.h"
using ::testing::AtLeast;
using ::testing::_;
TEST(BTest, mockObject)
{
// Arrange
MockA injectedMock;
EXPECT_CALL(injectedMock, methodToOverride())
.Times(AtLeast(1));
B classUnderTest(injectedMock);
// Act
classUnderTest.MethodToTest();
}
@Someprogrammerdude重新發布了這個問題,刪除原來的代碼,在這裏用確切的代碼...如果你有任何見解,他們將不勝感激! – Aerophilic
@doctorlove從上一問題轉貼 – Aerophilic
請不要刪除並重新發布相同的問題。改爲編輯現有問題。這也會將問題重新推回頭版。 –