QTestLib: проблема тестирования приложения Target = - PullRequest
0 голосов
/ 05 июля 2011

У меня проблема с зависимостями в моем проекте модульного тестирования.

Моя структура проекта выглядит следующим образом:

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 вызывает ClassB в ClassA.cpp:

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

Теперь я хочу провести модульное тестирование ClassA. Я нашел два способа сделать это. Первый - преобразовать подпроект src в библиотеку (TARGET = lib в src.pro). Затем я добавляю следующую строку в tests.pro и все нормально:

LIBS += ../libSrc.so

Второй - назвать ВСЕ файлы, которые используются ClassA в test.pro. Это означает, что мой tests.pro выглядит так:

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

Я не могу использовать первое решение (преобразование src-проекта в lib), поэтому я должен использовать второе. Действительно ли необходимо назвать все источники / заголовки, даже если я хочу протестировать только один из них? Спасибо за совет!

1 Ответ

0 голосов
/ 06 июля 2011

Я не могу использовать первое решение, означающее, что я не должен слишком сильно менять исходный код. Что такое TARGET = приложение сейчас, должно оставаться приложением. Моя единственная задача - добавить модульное тестирование в проект. Я нашел обходной путь, чтобы не называть все классы явно: в tests.pro:

SOURCES += $$files(../pathToCppDir/*.cpp)
HEADERS += $$files(../pathToHppDir/*.h)
SOURCES -= ../pathToCppDir/main.cpp          // excluding second main(){}
...