|
|
| (One intermediate revision by one other user not shown) |
| 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 "Gerrit":https://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
| |
| 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>
| |