对构造函数和析构函数的未定义引用

斯皮茨

我正在尝试编写单元测试usig google testgoogle mock但是我对此没有什么困难。我遇到错误(您可以在下面看到),我无法修复。

DummyUT.o: In function `~MockApplicationClass':
srctest/../mocks/AppMock.h:15: undefined reference to `Application::~Application()'
srctest/../mocks/AppMock.h:15: undefined reference to `Application::~Application()'
DummyUT.o: In function `MockApplicationClass':
srctest/../mocks/AppMock.h:15: undefined reference to `Application::Application()'
srctest/../mocks/AppMock.h:15: undefined reference to `Application::~Application()'
collect2: ld returned 1 exit status
make: *** [TestApp] Error 1

这是我的AppMock.h文件:

#ifndef APPMOCK_H_
#define APPMOCK_H_
#include "../../app.hxx"
#include "gmock/gmock.h"
class MockApplicationClass: public Application
{
  public:
    MOCK_CONST_METHOD2(Reset, void(int i, const char* chr));
};
#endif /* APPMOCK_H_ */

这里是app.hxx文件:

class Application {
   public:
      Application();
      ~Application();
      int Reset(int i, const char* chr)
}

在文件app.cxx中定义了构造函数和析构函数。析构函数很简单:

//Deconstruction method
Application::~Application() {
    // release all resources before exit

} // end of ~Application()

DummyUT文件:

#include <sys/types.h>
#include "../DummyClass.h" //path to code being tested
#include "../../app.hxx"
#include "../../testClass.h"
#include "../mocks/dummyMock.h" //path to mock
#include "../mocks/AppMock.h"
#include "../mocks/testMock.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"

using ::testing::AllOf;
using ::testing::Ge;
using ::testing::Le;

TEST(Test, testaplikacji)
{
    const char* a="abc";
    MockApplicationClass theClass;
}
int main(int argc, char** argv)
{
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

并制作文件:

CXX=g++

GTEST_DIR = ../../../UTframework/gmock-1.7.0/gtest
GMOCK_DIR = ../../../UTframework/gmock-1.7.0/


EXXX_PATH_PRE = /home/XXX/dev/exxx

# flags
CPPFLAGS += -isystem $(GTEST_DIR)/include -isystem $(GMOCK_DIR)/include 
CXXFLAGS += -g -Wall -Wextra -pthread
GMOCK_LIB = $(GMOCK_DIR)/make
# All tests produced by this Makefile.  Remember to add new tests you
TESTS = TestApp

CPPFLAGS += -isystem /home/XXX/dev/exxx/target/dataserver/include
CPPFLAGS += -isystem ../../Conflib/include
CPPFLAGS += -isystem /home/XXX/dev/exxx/target/XX/include
# All Google Test headers.  Usually you shouldn't change this
# definition.
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
    $(GTEST_DIR)/include/gtest/internal/*.h

# All Google Mock headers. Note that all Google Test headers are
# included here too, as they are #included by Google Mock headers.
# Usually you shouldn't change this definition.
GMOCK_HEADERS = $(GMOCK_DIR)/include/gmock/*.h \
    $(GMOCK_DIR)/include/gmock/internal/*.h \
    $(GTEST_HEADERS)

all: $(TESTS)

clean:
rm -f $(TESTS) *.o

TestCIPApp: DummyUT.o DummyClass.o testClass.o
    $(CXX) $(CPPFLAGS) $(CXXFLAGS)  $^ -L$(GMOCK_LIB) -lgmock_main -o $@

DummyUT.o: srctest/DummyUT.cpp
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $^

DummyClass.o:   DummyClass.cpp
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $^ -o $@
copy:
    cp $(TESTS) ../../../UTBuildAll
金·库林

如前所述,您必须为App添加另一个目标:

app.o:   app.cpp

而且TestCIPApp必须依赖于此:

TestCIPApp: DummyUT.o DummyClass.o testClass.o app.o

现在,目标文件也在那里,并且可以找到符号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对定义的构造函数的“未定义引用”

来自分类Dev

使用自定义析构函数时出现“未定义引用”错误

来自分类Dev

了解移动构造函数,std :: move和析构函数

来自分类Dev

C语言中的构造函数和析构函数

来自分类Dev

对构造函数和析构函数的未定义引用

来自分类Dev

来自libc ++的istringstream析构函数中对运算符delete的未定义引用

来自分类Dev

如何定义析构函数?

来自分类Dev

构造函数中的未定义引用

来自分类Dev

C ++ Protobuf对构造函数/析构函数的未定义引用

来自分类Dev

未定义对clang中析构函数的引用

来自分类Dev

奇怪的复制构造函数和析构函数错误

来自分类Dev

未定义对vTable的构造函数和析构函数引用

来自分类Dev

静态成员变量的构造函数和析构函数(指针)

来自分类Dev

对象的构造函数和析构函数

来自分类Dev

不调用对象的析构函数是未定义的行为吗?

来自分类Dev

如果未定义析构函数,为什么不进行返回值优化?

来自分类Dev

C ++:对构造函数的未定义引用

来自分类Dev

构造函数和析构函数

来自分类Dev

对定义的构造函数的“未定义引用”

来自分类Dev

C ++对共享库中类的构造函数和析构函数的未定义引用错误

来自分类Dev

C ++析构函数和内存分配以及未定义的行为

来自分类Dev

模板类的构造函数和析构函数声明语法

来自分类Dev

复制构造函数,析构函数和临时函数

来自分类Dev

构造函数和析构函数必须是虚拟的吗?

来自分类Dev

C ++构造函数/析构函数

来自分类Dev

C ++中的析构函数和构造函数排序

来自分类Dev

构造函数和析构函数如何工作?

来自分类Dev

c ++对默认构造函数的未定义引用

来自分类Dev

c ++复制构造函数和析构函数

Related 相关文章

  1. 1

    对定义的构造函数的“未定义引用”

  2. 2

    使用自定义析构函数时出现“未定义引用”错误

  3. 3

    了解移动构造函数,std :: move和析构函数

  4. 4

    C语言中的构造函数和析构函数

  5. 5

    对构造函数和析构函数的未定义引用

  6. 6

    来自libc ++的istringstream析构函数中对运算符delete的未定义引用

  7. 7

    如何定义析构函数?

  8. 8

    构造函数中的未定义引用

  9. 9

    C ++ Protobuf对构造函数/析构函数的未定义引用

  10. 10

    未定义对clang中析构函数的引用

  11. 11

    奇怪的复制构造函数和析构函数错误

  12. 12

    未定义对vTable的构造函数和析构函数引用

  13. 13

    静态成员变量的构造函数和析构函数(指针)

  14. 14

    对象的构造函数和析构函数

  15. 15

    不调用对象的析构函数是未定义的行为吗?

  16. 16

    如果未定义析构函数,为什么不进行返回值优化?

  17. 17

    C ++:对构造函数的未定义引用

  18. 18

    构造函数和析构函数

  19. 19

    对定义的构造函数的“未定义引用”

  20. 20

    C ++对共享库中类的构造函数和析构函数的未定义引用错误

  21. 21

    C ++析构函数和内存分配以及未定义的行为

  22. 22

    模板类的构造函数和析构函数声明语法

  23. 23

    复制构造函数,析构函数和临时函数

  24. 24

    构造函数和析构函数必须是虚拟的吗?

  25. 25

    C ++构造函数/析构函数

  26. 26

    C ++中的析构函数和构造函数排序

  27. 27

    构造函数和析构函数如何工作?

  28. 28

    c ++对默认构造函数的未定义引用

  29. 29

    c ++复制构造函数和析构函数

热门标签

归档