How to structure project while unit-testing Qt app by QTestLib

qt, qtestlib, qttest, unit-testing

Solution

First structure source like below:

MyApp
MyAppUnitTest

Under `MyApp` project, use a `MyAppSrc.pri` to locate source files:

SOURCES += \
    ../../../framework/src/myapp.cpp \
    ../../../framework/src/mycontrol.cpp

HEADERS += \
    ../../../framework/inc/myapp.h \
    ../../../framework/inc/mycontrol.h

INCLUDEPATH += ../../../framework/extlibs

Include this `.pri` in `MyApp.pro` like:

include(MyAppSrc.pri)

Then structure the testing project exactly like the main project, with one extra include in `MyAppUnitTest.pro`:

include(MyAppUnitTestSrc.pri)
include(../MyApp/MyAppSrc.pri)

Problem

I got my Qt project and I'm using Qt Creator. I want to unit-test all my code. However I'm quite new at QTestLib framework but everyone recommended it for testing Qt-based source. Now I'm a little confused how to structure test project with app project. - Can I put all source and testing code in same project? If so, how could I manage them? I didn't find any option that let me start app or start test in one project. - If I put app source and testing code in separate projects, the testing project will reference app project, that's not quite convenient. - For lots for classes required to be tested, how do I manage testing code? How do you guys manage testing code in such a situation? Thanks.

Original source