New-Unit-Test-Structure: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Convert ExpressionEngine links)
(Redirected page to New Unit Test Structure)
 
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
#REDIRECT [[New_Unit_Test_Structure]]
 
[[Category:Developing_Qt::QA]]
 
= New Unit Test Structure for Qt =
 
== 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], 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
cleanup to be done). The principle should be applied to other modules as well, and will be the responsibility
of the Qt community as a whole.
 
The test structure in QtBase currently looks essentially like this:
 
<code>
auto
corelib
animation
qabstractanimation <— tests for 'qabstractanimation' go here
qanimationgroup
thread
qmutex <— tests for 'qmutex' go here
qsemaphore
dbus
gui
integrationtests
network
opengl
other
sql
testlib
tools
xml
v8
</code>

Latest revision as of 19:13, 4 March 2015