0
P. 나는 Google Mock과 Google Test를 사용합니다.
P. 나는 Google Mock과 Google Test를 사용합니다.
QDir 클래스에는 가상 메서드가 없으므로 모의하기가 매우 어렵습니다. 당신은 here이라는 속임수를 쓸 수는 있지만 템플릿을 사용해야합니다. (당신이 선호하는 경우, 또는 참조)에 MyAbstractQDirInterface
클래스에 포인터를 허용하도록 setData
서명을 변경 약간
class MyAbstractQDirInterface {
public:
MyAbstractQDirInterface() = default;
virtual ~MyAbstractQDirInterface() = default;
virtual bool exists() = 0;
};
class MyConcreteQDirInterface: public MyAbstractQDirInterface {
public:
MyConcreteQDirInterface() = default;
~MyConcreteQDirInterface() override = default;
bool exists() override {
// here call the real QDir::exists
}
};
class MyQDirInterfaceMock: public MyAbstractQDirInterface {
public:
MOCK_METHOD0(exists, bool());
};
을하고 (나는 이런 식으로 할 것)을 할 수있는 다른 방법은 QDir의 추가 인터페이스를 정의하는 것입니다 :
void DATA::setData(MyAbstractQDirInterface* qdirInterface)
{
// ...
if (qdirInterface->exists()) {
// ...
}
}
그런 다음, 생산에 당신은 MyConcreteQDirInterface
로하고 MyQDirInterfaceMock
로 호출 할 수 있습니다 테스트 ENV이 메서드를 호출 할 수 있습니다.
Google 모크로 도서관 수업을 모의 할 수 있습니다. QDir mock 클래스를 생성하고 특정 상황에서 원하는 것을 리턴하기 위해 exists() 메소드를 구현해야한다. http://alexott.net/en/cpp/CppTestingIntro.html#gmock-example 링크를 전달하는 데 도움이되는 링크 일 수 있습니다. – talamaki