summaryrefslogtreecommitdiffstats
path: root/doc/testcases.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/testcases.txt')
-rw-r--r--doc/testcases.txt313
1 files changed, 0 insertions, 313 deletions
diff --git a/doc/testcases.txt b/doc/testcases.txt
deleted file mode 100644
index 5c6282a..0000000
--- a/doc/testcases.txt
+++ /dev/null
@@ -1,313 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of this
-** file.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-Organization of test cases
-==========================
-
-The test cases are launched by a C++ harness that consists of
-the following code:
-
- #include <QtQuickTest/quicktest.h>
- QUICK_TEST_MAIN(qmlexample)
-
-Where "qmlexample" is an identifier to use to uniquely identify
-this set of tests. You should add "CONFIG += qmltestcase" to your
-*.pro file; for example:
-
- TEMPLATE = app
- TARGET = tst_qmlexample
- CONFIG += warn_on qmltestcase
- SOURCES += tst_qmlexample.cpp
- RESOURCES += qmlexample.qrc
-
-The test harness scans recursively for "tst_*.qml" files in the qrc
-resources that are bound into the test harness binary. The following
-is an example .qrc file:
-
- <!DOCTYPE RCC><RCC version="1.0">
- <qresource>
- <file>tst_basic.qml</file>
- <file>tst_item.qml</file>
- </qresource>
- </RCC>
-
-The QUICK_TEST_SOURCE_DIR macro can be defined at compile time to
-run tests from plain files without binding them into resources.
-Modify your .pro file to include the following line:
-
- DEFINES += QUICK_TEST_SOURCE_DIR=\"\\\"$$PWD\\\"\"
-
-The QUICK_TEST_SOURCE_DIR environment variable can also be set
-at runtime to run test cases from a different directory. This may
-be needed to run tests on a target device where the compiled-in
-directory name refers to a host.
-
-Other *.qml files may appear for auxillary QML components that are
-used by the test.
-
-See "tests/qmlexample" for an example of creating a test harness
-that uses resources and "tests/qmlauto" for an example that uses
-the QUICK_TEST_SOURCE_DIR macro.
-
-If your test case needs QML imports, then you can add them as
-"-import" options to the the test program command-line by adding
-the following line to your .pro file:
-
- IMPORTPATH += $$PWD/../imports/my_module1 $$PWD/../imports/my_module2
-
-Basic test cases
-================
-
-Test cases are written as JavaScript functions within a "TestCase" element:
-
-----------------------
-import QtQuick 1.0
-import QtQuickTest 1.0
-
-TestCase {
- name: "MathTests"
-
- function test_math() {
- compare(2 + 2, 4, "2 + 2 = 4")
- }
-
- function test_fail() {
- compare(2 + 2, 5, "2 + 2 = 5")
- }
-}
-----------------------
-
-Functions that start with "test_" are treated as test cases to be
-executed. The "name" is used to prefix the functions in the output:
-
-********* Start testing of MathTests *********
-FAIL! : MathTests::test_fail() 2 + 2 = 5: actual: 4, expected: 5
-PASS : MathTests::test_math()
-Totals: 1 passed, 1 failed, 0 skipped
-********* Finished testing of MathTests *********
-
-Because of the way JavaScript properties work, the order in which the
-test functions are found is unpredictable. To assist with predictability,
-the test framework will sort the functions on ascending order of name.
-This can help when there are two tests that must be run in order.
-
-A number of helper functions are available to assist with writing tests:
-
- fail(msg)
- - Fail the current test and show "msg".
- - Similar to QFAIL in C++
-
- verify(cond, msg)
- - Verify that "cond" is true, fail with "msg" if not.
- - Similar to QVERIFY in C++
-
- compare(actual, expected, msg)
- - Compare "actual" with "expected", fail with "msg" if not.
- - Similar to QCOMPARE in C++
-
- tryCompare(obj, prop, value[, timeout])
- - Tries comparing the property called "prop" on "obj" with "value".
- If the compare fails, wait for up to "timeout" milliseconds,
- processing Qt events, until the property becomes "value".
- - The default timeout is 5000 milliseconds.
- - e.g. tryCompare(img, "status", BorderImage.Ready)
-
- skip(msg) ["Single" mode]
- skipAll(msg)
- - Skip the current test and show "msg".
- - Similar to QSKIP in C++
-
- expectFail(msg) ["Abort" mode]
- expectFailContinue(msg)
- - Mark the current test as expected to fail, with "msg" on failure.
-
- warn(msg)
- - Similar to QWARN in C++
-
- ignoreWarning(msg)
- - Ignore warning message
- - Similar to QTest::ignoreMessage(QtWarningMsg, msg)
-
- wait(ms)
- - Wait for "ms" milliseconds, processing Qt events.
-
- sleep(ms)
- - Sleep for "ms" milliseconds, but do not process events.
-
-The "msg" parameters can be omitted if there is no particular message
-that should be displayed other than "FAIL" or "SKIP".
-
-Special functions
-=================
-
-The following special function names have the same meaning as in C++:
-
- initTestCase()
- cleanupTestCase()
- init()
- cleanup()
-
-Note: The initTestCase_data() function from C++ is not supported.
-
-Data-driven tests
-=================
-
-Table data can be provided to a test using a function name that ends
-with "_data":
-
-----------------------
-import QtQuick 1.0
-import QtQuickTest 1.0
-
-TestCase {
- name: "DataTests"
-
- function test_table_data() {
- return [
- {tag: "2 + 2 = 4", a: 2, b: 2, answer: 4 },
- {tag: "2 + 6 = 8", a: 2, b: 6, answer: 8 },
- ]
- }
-
- function test_table(data) {
- compare(data.a + data.b, data.answer)
- }
-}
-----------------------
-
-The test framework will iterate over all of the rows in the table
-and pass each row to the test function. As shown, the columns can be
-extracted for use in the test. The "tag" column is special - it is printed
-by the test framework when a row fails, to help the reader identify which
-case failed amongst a set of otherwise passing tests.
-
-Asynchronous testing
-====================
-
-The easiest method for asynchronous testing is to use tryCompare() to
-wait for a property to transition to an expected value. For example:
-
- tryCompare(img, "status", BorderImage.Ready)
- compare(img.width, 120)
- compare(img.height, 120)
- compare(img.horizontalTileMode, BorderImage.Stretch)
- compare(img.verticalTileMode, BorderImage.Stretch)
-
-The "when" property can be used to cause a "TestCase" element to trigger
-only when a certain condition is true. For example, the following example
-runs a test when the user presses the mouse button:
-
-----------------------
-import QtQuick 1.0
-import QtQuickTest 1.0
-
-Rectangle {
- id: foo
- width: 640; height: 480
- color: "cyan"
-
- MouseArea {
- id: area
- anchors.fill: parent
- }
-
- property bool bar: true
-
- TestCase {
- name: "ItemTests"
- when: area.pressed
- id: test1
-
- function test_bar() {
- verify(bar)
- }
- }
-}
-----------------------
-
-Multiple "TestCase" elements can be supplied. The test program will exit
-once they have all completed. If a test case doesn't need to run (because
-a precondition has failed), then "optional" can be set to true:
-
-----------------------
-TestCase {
- when: false
- optional: true
-
- function test_not_run() {
- verify(false)
- }
-}
-----------------------
-
-The special property "windowShown" can be used to trigger a test to run
-just after the main window has been shown on-screen:
-
-----------------------
-Button {
- id: button
- onClicked: text = "Clicked"
- TestCase {
- name: "ClickTest"
- when: windowShown
-
- function test_click() {
- button.clicked();
- compare(button.text, "Clicked");
- }
- }
-}
-----------------------
-
-Benchmarks
-==========
-
-If the test function name starts with "benchmark_", then it will be
-run multiple times with the Qt benchmark framework, with a average
-timing value reported for the runs. This is equivalent to using the
-QBENCHMARK macro in QTestLib.
-
-----------------------
-TestCase {
- id: top
- name: "CreateBenchmark"
-
- function benchmark_create_component() {
- var component = Qt.createComponent("item.qml")
- var obj = component.createObject(top)
- obj.destroy()
- component.destroy()
- }
-}
-----------------------
-
-RESULT : CreateBenchmark::benchmark_create_component:
- 0.23 msecs per iteration (total: 60, iterations: 256)
-PASS : CreateBenchmark::benchmark_create_component()
-
-To get the effect of the QBENCHMARK_ONCE macro, prefix the test
-function name with "benchmark_once_".