New-Unit-Test-Structure: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(Redirected page to New Unit Test Structure)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=New Unit Test Structure for Qt=
#REDIRECT [[New_Unit_Test_Structure]]
 
==Introduction==
 
This article focuses on the structure beneath <code>tests/auto/</code> so that you know exactly where to put your tests.
 
==Autotest Structure==
 
Whenever something is submitted to [https://codereview.qt.io/ Gerrit] ''[codereview.qt.io]'', it will be tested by [[CI-Configurations|CI System]].
 
The testing is done by executing tests located under <code>tests/auto/</code>.
 
Questions to ask:
 
* Where to put the test for my new class?
* Where is the test for the class containing my new function?
 
The proposed answer to these questions is:
 
The directory structure of the tests should resemble the directory structure of the Qt source itself as much as possible.
 
The structural resemblance has two advantages:
 
# It is easy to locate the test for a particular class.
# It is easy to test a certain functional area in isolation.
 
Consider the <code>QMutex</code> class for example. This resides in <code>src/corelib/thread/</code> and the corresponding test is located under <code>tests/auto/corelib/thread/qmutex/</code>.
 
As another example, let’s say that you have made a change that is likely to affect code under <code>src/corelib/</code> only. You can now execute a recursive test runner (such as ‘<code>make check</code>’) locally from <code>tests/auto/corelib/</code> and thus save time by running only the tests that are likely to be sensitive to the change. (Of course, at some point, a full test run needs to be executed, but that can happen less frequently.)
 
==Current state==
 
By the time of this writing, test restructuring has been done for QtBase only (and there is still a bit<br /> cleanup to be done). The principle should be applied to other modules as well, and will be the responsibility<br /> of the Qt community as a whole.
 
The test structure in QtBase currently looks essentially like this:
 
===Categories:===
 
* [[:Category:Developing Qt|Developing_Qt]]
** [[:Category:Developing Qt::QA|QA]]

Latest revision as of 19:13, 4 March 2015