【问题标题】:GoogleMock issue building C++ simple code with Eclipse使用 Eclipse 构建 C++ 简单代码的 GoogleMock 问题
【发布时间】:2019-10-11 08:00:21
【问题描述】:

在 MobileTest.h 我有:

#include <gtest/gtest.h>
#include <gmock/gmock.h>
using ::testing::Return;

#include "Mobile.h"

class MockedCamera : public Camera {
public:
    MOCK_METHOD0(ON, bool());
    MOCK_METHOD0(OFF,bool());
};

Mobile.h 代码:

#ifndef __MOBILE_H__
#define __MOBILE_H__

#include <iostream>
using namespace std;

#include "Camera.h"

class Mobile {
private:
    Camera *pCamera;
public:
    Mobile();
    Mobile(Camera *pCamera);
    bool powerOn();
    bool powerOff();
    virtual ~Mobile(){};
};

#endif /* __MOBILE_H__ */

Camera.h 头文件

#ifndef __CAMERA_H__
#define __CAMERA_H__

#include <iostream>
using namespace std;

class Camera {
public:
    Camera();
    virtual bool ON();
    virtual bool OFF();
    virtual ~Camera(){};
};

#endif /* __CAMERA_H__ */

这是 Udemy C++ Course 的简单代码,但是在使用 eclipse 构建时它给我错误 no mobile test.h MOCK_METHOD0 宏调用:

Symbol 'ArgumentCount' could not be resolved
The type 'testing::internal::FunctionMocker' must implement the inherited pure virtual method 'testing::internal::UntypedFunctionMockerBase::UntypedPerformAction' 

这是项目的 makefile,当我尝试使用 make 命令时,它给了我很多与 gtest 相关的错误:

SRC = $(wildcard src/*.cpp test/*.cpp)

OBJS = $(SRC:.cpp=.o)

CXXFLAGS = -std=c++14

LIBS = -pthread libgtest.a

INC = -I googletest/googletest \
      -I googletest/googletest/include \
      -I googlemock/googlemock \
      -I googlemock/googlemock/include \
      -I src \
      -I test

EXE = mobileTest.exe

all: $(OBJS)
    cp -f $(OBJS) .
    g++-7 -o $(EXE) $(CXXFLAGS) $(OBJS) $(LIBS) $(INC)
    rm -f $(OBJS)

%.o: %.cpp
    g++-7 -c $(CXXFLAGS) $(INC) $< -o $@

.PHONY: clean

clean:
    rm -f *.o *.exe

建议?

【问题讨论】:

  • 当我错误地将 GoogleMock 链接到项目时,我遇到了与索引器类似的问题(IIRC 我在某处有一些旧的 GoogleMock)。如果有效的 GTest/GMock 库链接到您的项目,请检查您的项目设置。
  • 我添加了 gtest、gtest_main、gmock、gmock_main 和 usr/local/lib 之类的路径,但什么都没有

标签: c++ eclipse googlemock


【解决方案1】:

我使用 gtest 和 gmock 作为库。

gtest库的工程文件包含以下源文件

SOURCES += ../googletest/src/gtest.cc \
../googletest/src/gtest-death-test.cc \
../googletest/src/gtest-filepath.cc \
../googletest/src/gtest-port.cc \
../googletest/src/gtest-printers.cc \
../googletest/src/gtest-test-part.cc \
../googletest/src/gtest-typed-test.cc

gmock库的工程文件包含以下源文件

SOURCES += ../googlemock/src/gmock-cardinalities.cc \
       ../googlemock/src/gmock-internal-utils.cc \
       ../googlemock/src/gmock-matchers.cc \
       ../googlemock/src/gmock-spec-builders.cc \
       ../googlemock/src/gmock.cc

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多