[Interest] make check not working (macOS)
scott at towel42.com
Wed Jun 23 19:12:44 CEST 2021
> Sent: Wednesday, June 23, 2021 at 11:45 AM
> From: "Kai Köhne" <Kai.Koehne at qt.io>
> To: "Jason H" <jhihn at gmx.com>, "interestqt-project.org" <interest at qt-project.org>
> Subject: RE: [Interest] make check not working (macOS)
> HI Jason,
> It looks to me like you're trying to add a test case into your normal application executable. Is that correct?
> The canonical use of QTest is different: You create a separate project for the tests, in a separate directory. If you e.g. check back on https://doc.qt.io/qt-5/qttestlib-tutorial1-example.html , this creates a new file testqstring.cpp, and then uns "qmake -project" in the directory to create a completely new project.
> Hope this helps.
Yes it does. Thanks!
So I have to manually maintain the modules being tested as a separate project? If so, that's pretty undesirable because of the manual effort to make sure that the test project is using the same source that the actual application uses. I hope I can automate that somehow? (Preferably requiring 0 maintenance) I would not be opposed to a "tests" subdir to hold this project, but then, that needs it's own .pro, and it needs to automatically reference the parent project's files. Immediately I am thinking I can just use HEADERS/SOURCES files with ../ prefixes but that violates my 0-maintenance requirement.
I want a brain-dead, simple, 0-maintenance test kit. The only thing the developers should have to worry about is adding test implementations once it is started.
Can this be achieved in Qt?
Unit tests like this should focus on testing small targeted items. The classes under test should only include the limited number of items. If you had a "mainwindow" directory, with 5 classes, I would recommend you have 5 or more test files, one for each class. Creating 5 different executables with 5 different testharnesses.
Once its setup, its pretty straight forward to maintain, but Ive never seen a brain-dead, simple, 0-maintenance test "kit". The easiest I have used is CMake + GoogleTest + QTest. I use CMake for the test harness and either google test and qtest depending on what is being tested. They both work in a very similar fashion. You create a new executable for each group of tests you are testing.
For a more automated setup, I will often have the unittest directory as a subdir of the classes directory. And as Thiago suggests have an include of the make system file into the unit test one.
More information about the Interest