[Interest] make check not working (macOS)
Scott Bloom
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?
Yes.
> 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.
Scott
More information about the Interest
mailing list