Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 575
fifth Avatar asked Aug 28 '12 07:08

fifth


People also ask

How do you write a unit test case in Qt?

Writing a Test First, you need a class that contains your test functions. This class has to inherit from QObject: #include <QTest> class TestQString: public QObject { Q_OBJECT private slots: void toUpper(); };


Video Answer


1 Answers

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) 
like image 62
fifth Avatar answered Sep 23 '22 17:09

fifth