qt5base-lts/tests/auto/testlib/selftests/junit/tst_junit.cpp
Tor Arne Vestbø bef57b317f testlib: Deprecate QWARN() in favor of qWarning()
The QtTest best practices documentations recommends using output
mechanisms such as qDebug() and qWarning() for diagnostic messages,
and this is also what most of our own tests do.

The QWARN() macro and corresponding internal QTest::qWarn() function
was added when QtTest was first implemented, but was likely meant as
an internal implementation detail, like its cousin QTestLog::info(),
which does not have any corresponding macro.

This theory is backed by our own QtTest self-test (tst_silent)
describing the output from QWARN() as "an internal testlib warning".

The only difference between QWARN() and qWarning(), besides the much
richer feature set of the latter, is that qWarning() will not pass
on file and line number information in release mode, but QWARN() will.
This is an acceptable loss of functionality, considering that the user
can override this behavior by defining QT_MESSAGELOGCONTEXT.

[ChangeLog][QtTest] QWARN() has been deprecated in favor of qWarning()

Pick-to: 6.2
Change-Id: I5a2431ce48c47392244560dd520953b9fc735c85
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-08-04 19:31:51 +02:00

103 lines
2.6 KiB
C++

/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QTest>
class tst_JUnit : public QObject
{
Q_OBJECT
public:
tst_JUnit();
private slots:
void testFunc1();
void testFunc2();
void testFunc3();
void testFunc4();
void testFunc5();
void testFunc6();
void testFunc7();
};
tst_JUnit::tst_JUnit()
{
}
void tst_JUnit::testFunc1()
{
qWarning("just a qWarning() !");
QCOMPARE(1,1);
}
void tst_JUnit::testFunc2()
{
qDebug("a qDebug() call with comment-ending stuff -->");
QCOMPARE(2, 3);
}
void tst_JUnit::testFunc3()
{
QSKIP("skipping this function!");
}
void tst_JUnit::testFunc4()
{
QFAIL("a forced failure!");
}
/*
Note there are two testfunctions which give expected failures.
This is so we can test that expected failures don't add to failure
counts and unexpected passes do. If we had one xfail and one xpass
testfunction, we couldn't test which one of them adds to the failure
count.
*/
void tst_JUnit::testFunc5()
{
QEXPECT_FAIL("", "this failure is expected", Abort);
QVERIFY(false);
}
void tst_JUnit::testFunc6()
{
QEXPECT_FAIL("", "this failure is also expected", Abort);
QFAIL("This is a deliberate failure");
}
void tst_JUnit::testFunc7()
{
QEXPECT_FAIL("", "this pass is unexpected", Abort);
QVERIFY(true);
}
QTEST_APPLESS_MAIN(tst_JUnit)
#include "tst_junit.moc"