Search code examples
qtunit-testingqtestlibqttest

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


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.

  1. 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.
  2. If I put app source and testing code in separate projects, the testing project will reference app project, that's not quite convenient.
  3. 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.


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)