0

我的单元测试项目中的依赖项有问题。

我的项目结构如下:

MyProject
  |---MyProject.pro
  |---src
  |     |---src.pro
  |     |---ClassA.h
  |     |---ClassA.cpp    
  |     |---ClassB.h
  |     |---ClassB.cpp
  |
  |---tests  
        |--tests.pro
        |--testClassA.cpp

MyProject.pro:

TEMPLATE = subdirs
SUBDIRS = src tests

src.pro:

TEMPLATE = app
TARGET = someApp
HEADERS += classA.h classB.h
SOURCES += classA.cpp classB.cpp

假设 ClassA 在 ClassA.cpp 中调用 ClassB:

void ClassA::someFunctionInClassA()
{
   ClassB b;
}

现在我想对 ClassA 进行单元测试。我找到了两种方法。第一个是将 src-Subproject 转换为库(TARGET = lib in src.pro)。然后我将以下行添加到 tests.pro 中,一切正常:

LIBS += ../libSrc.so

第二个是命名 test.pro 中 ClassA 使用的所有文件。这意味着我的 tests.pro 看起来像:

TARGET = testclassA
TEMPLATE = app
/*...*/
HEADERS += ../src/ClassA.h \
           ../src/ClassB.h
SOURCES += testClassA.cpp \
           ../src/ClassA.cpp \
           ../src/ClassB.cpp

我不能使用第一个解决方案(将 src-project 转换为 lib),所以我必须使用第二个。即使我只想测试其中一个,是否真的有必要命名所有源/标题?谢谢指教!

4

1 回答 1

0

我不能使用第一个解决方案意味着我不能对源代码进行太多更改。什么是 TARGET = app 现在,必须仍然是一个应用程序。我唯一的任务是将单元测试添加到项目中。我找到了一种不明确命名所有类的解决方法:在tests.pro中:

SOURCES += $$files(../pathToCppDir/*.cpp)
HEADERS += $$files(../pathToHppDir/*.h)
SOURCES -= ../pathToCppDir/main.cpp          // excluding second main(){}
于 2011-07-06T06:54:33.007 回答