谷歌模拟课堂上的非虚拟功能

时间:2017-08-11 06:02:05

标签: c++ unit-testing googlemock

我已针对virtual功能测试了Google Mock,但无法为non-virtual执行此操作。我没有理解" hi-perf依赖注入" 的概念。

下面是具有一个non-virtual功能的类。我想用Google Mock来测试这个功能。为简单起见,我删除了核心部分并保留了单个return语句。

以下是示例:

// gtest and gmock files are added

class DetectorGPIO
{
    DetectorGPIO(void);
    virtual ~DetectorGPIO() {}
    StartPulseHigh();
};

BOOL DetectorGPIO::StartPulseHigh()
{
    return 1;
}

class MockDetectorGPIO : public DetectorGPIO
{
public:
    MOCK_METHOD0(StartPulseHigh,BOOL(void));
};

我错过了任何概念吗?

我是Google Mock的新手。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以在Google Mock Cookbook中阅读有关hi-perf依赖注入的内容。我认为它清楚地描述了使用这个概念的正确方法。

在这种类型的嘲弄中,MockDetectorGPIO不需要继承DetectorGPIO。在您想要使用具体类(或模拟)的地方,您应该使用模板:

template <class Detector>
void ConfigureDetectorGPIO(Detector* pDetector)
{
    pDetector->StartPulseHigh();
}

请注意,在Google Mock中,您没有义务模拟现有方法。