En esta página

QTest Namespace

El espacio de nombres QTest contiene todas las funciones y declaraciones relacionadas con Qt Test. Más...

Cabecera: #include <QTest>
CMake: find_package(Qt6 REQUIRED COMPONENTS Test)
target_link_libraries(mytarget PRIVATE Qt6::Test)
qmake: QT += testlib

Clases

class QTouchEventSequence
class QTouchEventWidgetSequence
(since 6.8) class ThrowOnFailDisabler
(since 6.8) class ThrowOnFailEnabler
(since 6.8) class ThrowOnSkipDisabler
(since 6.8) class ThrowOnSkipEnabler

Tipos

enum KeyAction { Press, Release, Click, Shortcut }
enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove }
enum QBenchmarkMetric { FramesPerSecond, BitsPerSecond, BytesPerSecond, WalltimeMilliseconds, WalltimeNanoseconds, …, EmulationFaults }
enum TestFailMode { Abort, Continue }

Variables

(since 6.11) std::atomic<std::chrono::milliseconds> defaultTryTimeout

Funciones

void addColumn(const char *name, T *dummy = 0)
QTestData &addRow(const char *format, ...)
const char *benchmarkMetricName(QTest::QBenchmarkMetric metric)
const char *benchmarkMetricUnit(QTest::QBenchmarkMetric metric)
QPointingDevice *createTouchDevice(QInputDevice::DeviceType devType = QInputDevice::DeviceType::TouchScreen, QInputDevice::Capabilities caps = QInputDevice::Capability::Position)
const char *currentAppName()
const char *currentDataTag()
(since 6.11) const char *currentGlobalDataTag()
bool currentTestFailed()
const char *currentTestFunction()
(since 6.5) bool currentTestResolved()
(since 6.3) void failOnWarning(const QRegularExpression &messagePattern)
(since 6.8) void failOnWarning()
(since 6.3) void failOnWarning(const char *message)
void ignoreMessage(QtMsgType type, const char *message)
void ignoreMessage(QtMsgType type, const QRegularExpression &messagePattern)
void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClicks(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keySequence(QWidget *widget, const QKeySequence &keySequence)
void keySequence(QWindow *window, const QKeySequence &keySequence)
void mouseClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseDClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay = -1)
void mouseMove(QWindow *window, QPoint pos = QPoint(), int delay = -1)
void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
QTestData &newRow(const char *dataTag)
int qExec(QObject *testObject, int argc = 0, char **argv = nullptr)
int qExec(QObject *testObject, const QStringList &arguments)
QSharedPointer<QTemporaryDir> qExtractTestData(const QString &dirName)
(since 6.5) void qRegisterTestCase(const QString &name, QTest::TestEntryFunction entryFunction)
(since 6.7) void qSleep(std::chrono::milliseconds msecs)
void qSleep(int ms)
(since 6.7) void qWait(std::chrono::milliseconds msecs)
void qWait(int msecs)
(since 6.7) bool qWaitFor(Functor predicate, QDeadlineTimer deadline = QDeadlineTimer( defaultTryTimeout.load(std::memory_order_relaxed)))
bool qWaitFor(Functor predicate, int timeout)
(since 6.10) bool qWaitForWindowActive(QWidget *widget, QDeadlineTimer timeout)
(since 6.10) bool qWaitForWindowActive(QWindow *window, QDeadlineTimer timeout)
(since 6.10) bool qWaitForWindowActive(QWidget *widget)
(since 6.10) bool qWaitForWindowActive(QWindow *window)
bool qWaitForWindowActive(QWidget *widget, int timeout)
bool qWaitForWindowActive(QWindow *window, int timeout)
(since 6.10) bool qWaitForWindowExposed(QWidget *widget, QDeadlineTimer timeout)
(since 6.10) bool qWaitForWindowExposed(QWindow *window, QDeadlineTimer timeout)
(since 6.10) bool qWaitForWindowExposed(QWidget *widget)
(since 6.10) bool qWaitForWindowExposed(QWindow *window)
bool qWaitForWindowExposed(QWidget *widget, int timeout)
bool qWaitForWindowExposed(QWindow *window, int timeout)
(since 6.7) bool qWaitForWindowFocused(QWidget *widget, QDeadlineTimer timeout)
(since 6.7) bool qWaitForWindowFocused(QWindow *window, QDeadlineTimer timeout)
(since 6.10) bool qWaitForWindowFocused(QWidget *widget)
(since 6.10) bool qWaitForWindowFocused(QWindow *window)
void setBenchmarkResult(qreal result, QTest::QBenchmarkMetric metric)
(since 6.8) void setThrowOnFail(bool enable)
(since 6.8) void setThrowOnSkip(bool enable)
char *toHexRepresentation(const char *ba, qsizetype length)
char *toString(QSizePolicy sp)
char *toString(const T &value)
char *toString(QSizePolicy::ControlType ct)
char *toString(QSizePolicy::ControlTypes cts)
char *toString(QSizePolicy::Policy p)
char *toString(const QByteArray &ba)
char *toString(const QCborError &c)
char *toString(const QChar &character)
char *toString(const QDate &date)
char *toString(const QDateTime &dateTime)
(since 6.5) char *toString(const QKeySequence &ks)
char *toString(const QLatin1StringView &string)
char *toString(const QPoint &point)
char *toString(const QPointF &point)
char *toString(const QRect &rectangle)
char *toString(const QRectF &rectangle)
char *toString(const QSize &size)
char *toString(const QSizeF &size)
char *toString(const QString &string)
char *toString(const QStringView &string)
char *toString(const QTime &time)
char *toString(const QUrl &url)
char *toString(const QUuid &uuid)
char *toString(const QVariant &variant)
char *toString(const QVector2D &v)
char *toString(const QVector3D &v)
char *toString(const QVector4D &v)
char *toString(const std::pair<T1, T2> &pair)
char *toString(const std::tuple<Types...> &tuple)
char *toString(std::nullptr_t)
QTest::QTouchEventWidgetSequence touchEvent(QWidget *widget, QPointingDevice *device, bool autoCommit = true)
QTest::QTouchEventSequence touchEvent(QWindow *window, QPointingDevice *device, bool autoCommit = true)
(since 6.8) void wheelEvent(QWindow *window, QPointF pos, QPoint angleDelta, QPoint pixelDelta = QPoint(0, 0), Qt::KeyboardModifiers stateKey = Qt::NoModifier, Qt::ScrollPhase phase = Qt::NoScrollPhase)

Macros

QBENCHMARK
QBENCHMARK_ONCE
QCOMPARE(real, esperado)
(since 6.9) QCOMPARE_3WAY(lhs, rhs, orden)
(since 6.4) QCOMPARE_EQ(calculado, línea de base)
(since 6.4) QCOMPARE_GE(calculado, línea de base)
(since 6.4) QCOMPARE_GT(calculado, línea de base)
(since 6.4) QCOMPARE_LE(calculado, base de referencia)
(since 6.4) QCOMPARE_LT(calculado, base de referencia)
(since 6.4) QCOMPARE_NE(calculado, línea de base)
QEXPECT_FAIL(dataIndex, comentario, modo)
QFAIL(mensaje)
QFETCH(tipo, nombre)
QFETCH_GLOBAL(tipo, nombre)
QFINDTESTDATA(nombre de archivo)
QSKIP(descripción)
QTEST(real, testElement)
QTEST_APPLESS_MAIN(TestClass)
QTEST_GUILESS_MAIN(TestClass)
QTEST_MAIN(TestClass)
(since 6.8) QTEST_THROW_ON_FAIL
(since 6.8) QTEST_THROW_ON_SKIP
QTRY_COMPARE(real, esperado)
(since 6.4) QTRY_COMPARE_EQ(calculado, línea de base)
(since 6.4) QTRY_COMPARE_EQ_WITH_TIMEOUT(calculado, línea de base, tiempo de espera)
(since 6.4) QTRY_COMPARE_GE(calculado, línea de base)
(since 6.4) QTRY_COMPARE_GE_WITH_TIMEOUT(calculado, línea de base, tiempo de espera)
(since 6.4) QTRY_COMPARE_GT(calculada, línea de base)
(since 6.4) QTRY_COMPARE_GT_WITH_TIMEOUT(calculada, línea de base, tiempo de espera)
(since 6.4) QTRY_COMPARE_LE(calculada, línea de base)
(since 6.4) QTRY_COMPARE_LE_WITH_TIMEOUT(calculada, línea de base, tiempo de espera)
(since 6.4) QTRY_COMPARE_LT(calculada, línea de base)
(since 6.4) QTRY_COMPARE_LT_WITH_TIMEOUT(calculada, línea de base, tiempo de espera)
(since 6.4) QTRY_COMPARE_NE(calculada, línea de base)
(since 6.4) QTRY_COMPARE_NE_WITH_TIMEOUT(calculado, línea de base, tiempo de espera)
QTRY_COMPARE_WITH_TIMEOUT(real, esperado, tiempo de espera)
QTRY_VERIFY2(condición, mensaje)
QTRY_VERIFY(condición)
QTRY_VERIFY2_WITH_TIMEOUT(condición, mensaje, tiempo de espera)
QTRY_VERIFY_WITH_TIMEOUT(condición, tiempo de espera)
QVERIFY2(condición, mensaje)
QVERIFY(condición)
(since 6.3) QVERIFY_THROWS_EXCEPTION(tipo de excepción, ...)
(since 6.3) QVERIFY_THROWS_NO_EXCEPTION(...)

Descripción detallada

Consulte la descripción general deQt Test para obtener información sobre cómo escribir pruebas unitarias.

Clases

Clase QTouchEventSequence

La clase QTouchEventSequence se utiliza para simular una secuencia de eventos táctiles. Más...

clase QTouchEventWidgetSequence

La clase QTouchEventWidgetSequence se utiliza para simular una secuencia de eventos táctiles para un widget. Más...

clase ThrowOnFailDisabler

clase ThrowOnFailEnabler

clase ThrowOnSkipDisabler

clase ThrowOnSkipEnabler

Documentación de tipos

enum QTest::KeyAction

Este enum describe posibles acciones para el manejo de claves.

ConstanteValorDescripción
QTest::Press0Se pulsa la tecla.
QTest::Release1La tecla se suelta.
QTest::Click2La tecla se pulsa (se pulsa y se suelta).
QTest::Shortcut3Se activa un acceso directo. Este valor se ha añadido en Qt 5.6.

enum QTest::MouseAction

Este enum describe posibles acciones para el manejo del ratón.

ConstanteValorDescripción
QTest::MousePress0Se pulsa un botón del ratón.
QTest::MouseRelease1Se suelta un botón del ratón.
QTest::MouseClick2Se hace clic en un botón del ratón (se pulsa y se suelta).
QTest::MouseDClick3Se ha hecho doble clic en un botón del ratón (se ha pulsado y soltado dos veces).
QTest::MouseMove4El puntero del ratón se ha movido.

enum QTest::QBenchmarkMetric

Este enum enumera todas las cosas que se pueden comparar.

ConstanteValorDescripción
QTest::FramesPerSecond0Fotogramas por segundo
QTest::BitsPerSecond1Bits por segundo
QTest::BytesPerSecond2Bytes por segundo
QTest::WalltimeMilliseconds3Tiempo de reloj en milisegundos
QTest::WalltimeNanoseconds7Tiempo de reloj en nanosegundos
QTest::BytesAllocated8Uso de memoria en bytes
QTest::Events6Recuento de eventos
QTest::CPUTicks4Tiempo de CPU
QTest::CPUMigrations9Migraciones de procesos entre CPU
QTest::CPUCycles10Ciclos de CPU
QTest::RefCPUCycles30Ciclos de CPU de referencia
QTest::BusCycles11Ciclos de bus
QTest::StalledCycles12Ciclos parados
QTest::InstructionReads5Lectura de instrucciones
QTest::Instructions13Instrucciones ejecutadas
QTest::BranchInstructions14Instrucciones de tipo rama
QTest::BranchMisses15Instrucciones de bifurcación mal predichas
QTest::CacheReferences16Accesos a caché de cualquier tipo
QTest::CacheMisses20Fallos de caché de cualquier tipo
QTest::CacheReads17Lecturas / cargas de caché
QTest::CacheReadMisses21Fallos de lectura/carga de caché
QTest::CacheWrites18Escrituras/almacenamientos en caché
QTest::CacheWriteMisses22Fallos de escritura / almacenamiento en caché
QTest::CachePrefetches19Predetecciones de caché
QTest::CachePrefetchMisses23Fallos de prefijación de caché
QTest::ContextSwitches24Cambios de contexto
QTest::PageFaults25Fallos de página de cualquier tipo
QTest::MinorPageFaults26Fallos de página menores
QTest::MajorPageFaults27Fallos de página mayores
QTest::AlignmentFaults28Fallos causados por desalineación
QTest::EmulationFaults29Fallos que requirieron emulación de software

Tenga en cuenta que WalltimeNanoseconds y BytesAllocated sólo se proporcionan para su uso a través de setBenchmarkResult(), y los resultados en esas métricas no pueden ser proporcionados automáticamente por el marco QTest.

Véase también QTest::benchmarkMetricName() y QTest::benchmarkMetricUnit().

enum QTest::TestFailMode

Este enum describe los modos para manejar una comprobación, como por ejemplo mediante las macros QVERIFY() o QCOMPARE(), que se sabe que falla. El modo se aplica independientemente de si la comprobación falla o tiene éxito.

ConstanteValorDescripción
QTest::Abort1Aborta la ejecución de la prueba. Utilice este modo cuando no tenga sentido seguir ejecutando la prueba después de la comprobación problemática.
QTest::Continue2Continúa la ejecución de la prueba después de la comprobación problemática.

Véase también QEXPECT_FAIL().

Variable Documentación

[since 6.11] std::atomic<std::chrono::milliseconds> QTest::defaultTryTimeout

Esta variable global almacena el tiempo de espera por defecto utilizado por las funciones QTRY_* y qWait.

El caso de uso más típico de esta variable es modificar el tiempo de espera para toda una prueba:

    using namespace std::chrono_literals;
    // Since the atomic itself (defaultTryTimeout) is the only data,
    // all reads and stores can be relaxed.
    QTest::defaultTryTimeout.store(1s, std::memory_order_relaxed);

Sin embargo, también puede establecerlo para un ámbito específico, utilizando QAtomicScopedValueRollback:

    const auto timeoutRollback = QAtomicScopedValueRollback(
        QTest::defaultTryTimeout, 1s, std::memory_order_relaxed);

Para acceder al valor, llame a load():

    // Since the atomic itself is all the data, all reads and stores can be relaxed.
    QCOMPARE(QTest::defaultTryTimeout.load(std::memory_order_relaxed), 1s);

Esta variable se introdujo en Qt 6.11.

Documentación de funciones

template <typename T> void QTest::addColumn(const char *name, T *dummy = 0)

Añade una columna de tipo T a los datos de prueba actuales. name es el nombre de la columna. dummy es una solución para los compiladores con errores y puede ignorarse.

Para rellenar la columna con valores, puede utilizarse newRow(). Utilice QFETCH() para obtener los datos en la prueba actual.

Ejemplo:

    QTest::addColumn<int>("intval");
    QTest::addColumn<QString>("str");
    QTest::addColumn<double>("dbl");
    QTest::newRow("row1") << 1 << "hello" << 1.5;

Nota: Esta función sólo puede utilizarse como parte de la función de datos de una prueba invocada por el marco de pruebas.

Véase Data Driven Testing para un ejemplo más extenso.

Véase también QTest::newRow(), QFETCH(), y QMetaType.

QTestData &QTest::addRow(const char *format, ...)

Añade una nueva fila a los datos de prueba actuales.

Los argumentos de la función se pasan a std:: snprintf () para formatearlos según format. Consulte la documentación de std::snprintf( ) para conocer las advertencias y limitaciones.

La salida de la prueba identificará la prueba ejecutada con estos datos de prueba utilizando el nombre resultante de este formateo.

Devuelve una referencia QTestData que puede utilizarse para introducir datos, un valor por cada columna de la tabla.

Ejemplo:

    QTest::addColumn<int>("input");
    QTest::addColumn<QString>("output");
    QTest::addRow("%d", 0) << 0 << QString("0");
    QTest::addRow("%d", 1) << 1 << QString("1");

Nota: Esta función sólo puede ser llamada como parte de la función de datos de una prueba que es invocada por el marco de pruebas.

Véase Data Driven Testing para un ejemplo más extenso.

Véase también newRow(), addColumn() y QFETCH().

const char *QTest::benchmarkMetricName(QTest::QBenchmarkMetric metric)

Devuelve el valor del enum metric como cadena de caracteres.

const char *QTest::benchmarkMetricUnit(QTest::QBenchmarkMetric metric)

Devuelve las unidades de medida para el metric especificado.

QPointingDevice *QTest::createTouchDevice(QInputDevice::DeviceType devType = QInputDevice::DeviceType::TouchScreen, QInputDevice::Capabilities caps = QInputDevice::Capability::Position)

Crea un dispositivo táctil ficticio de tipo devType con capacidades caps para la simulación de eventos táctiles.

El dispositivo táctil se registrará con la interfaz del sistema de ventanas Qt. Normalmente debería utilizar createTouchDevice() para inicializar una variable miembro QPointingDevice en su clase de caso de prueba, utilizar la misma instancia para todas las pruebas y eliminarla cuando ya no la necesite.

Véase también QTest::QTouchEventSequence y touchEvent().

const char *QTest::currentAppName()

Devuelve el nombre del binario que se está ejecutando actualmente.

const char *QTest::currentDataTag()

Devuelve el nombre de los datos de prueba actuales. Si la prueba no tiene ningún testdata asignado, la función devuelve nullptr.

[since 6.11] const char *QTest::currentGlobalDataTag()

Devuelve el nombre de los datos de prueba globales actuales. Si la prueba no tiene ningún testdata global asignado, la función devuelve nullptr.

Esta función se introdujo en Qt 6.11.

bool QTest::currentTestFailed()

Devuelve true si la función de prueba actual ha fallado, en caso contrario false.

Véase también QTest::currentTestResolved().

const char *QTest::currentTestFunction()

Devuelve el nombre de la función de prueba que se está ejecutando actualmente.

Ejemplo:

void MyTestClass::cleanup()
{
    if (qstrcmp(QTest::currentTestFunction(), "myDatabaseTest") == 0) {
        // clean up all database connections
        closeAllDatabases();
    }
}

[since 6.5] bool QTest::currentTestResolved()

Devuelve true si la función de prueba actual ha fallado o se ha saltado.

Se aplica si la prueba ha fallado o ha ejercido un salto. Cuando es verdadero, la función de prueba debe regresar pronto. En particular, las macros QTRY_* y el bucle de eventos de prueba terminan sus bucles antes de tiempo si se ejecutan durante la función de prueba (pero no su cleanup()). Después de que una prueba haya llamado a una función de ayuda que utiliza las macros de este módulo, puede utilizar esta función para comprobar si debe volver antes.

Esta función se introdujo en Qt 6.5.

Véase también QTest::currentTestFailed().

[since 6.3] void QTest::failOnWarning(const QRegularExpression &messagePattern)

Añade un fallo de prueba al registro de pruebas por cada advertencia que coincida con messagePattern.

La función de prueba continuará la ejecución cuando se añada un fallo. Para abortar la prueba en su lugar, puede comprobar currentTestFailed() y devolver antes de tiempo si es true.

Para cada advertencia, el primer patrón que coincida provocará un fallo, y los patrones restantes se ignorarán.

Todos los patrones se borran al final de cada función de prueba.

void FileTest::loadFiles() { QTest::failOnWarning(QRegularExpression("^Failed to load")); // Cada uno de estos causará un fallo en la prueba:    qWarning() << "Failed to load image";
    qWarning() << "Failed to load video";
}

Para fallar cada prueba que dispara una advertencia dada, pase una expresión regular adecuada a esta función en init():

void FileTest::init()
{
    QTest::failOnWarning(
        QRegularExpression("QFile::.*: File(.*) already open"));
}

Para el caso común de fallar en cualquier advertencia no pase ningún parámetro:

void FileTest::init()
{
    QTest::failOnWarning();
}

Nota: ignoreMessage() tiene precedencia sobre esta función, por lo que cualquier advertencia que coincida con un patrón dado tanto a ignoreMessage() como a failOnWarning() será ignorada.

Esta función se introdujo en Qt 6.3.

Ver también QTEST_FATAL_FAIL.

[since 6.8] void QTest::failOnWarning()

Añade un fallo de prueba al registro de pruebas si se emite alguna advertencia.

Esta función sobrecarga QTest::failOnWarning().

Esta función se introdujo en Qt 6.8.

Véase también failOnWarning(const char *).

[since 6.3] void QTest::failOnWarning(const char *message)

Añade un fallo de prueba al registro de pruebas si se muestra message.

Esta función sobrecarga QTest::failOnWarning().

Esta función se introdujo en Qt 6.3.

Véase también failOnWarning().

void QTest::ignoreMessage(QtMsgType type, const char *message)

Ignora los mensajes creados por qDebug(), qInfo() o qWarning(). Si se emite el mensaje message con el correspondiente type, se eliminará del registro de la prueba. Si la prueba ha finalizado y no se ha enviado el mensaje message, se añadirá un mensaje de error al registro de la prueba.

Nota: Al invocar esta función sólo se ignorará un mensaje. Si el mensaje que desea ignorar se emite dos veces, también tendrá que llamar a ignoreMessage() dos veces.

Ejemplo:

QDir dir;
QTest::ignoreMessage(QtWarningMsg, "QDir::mkdir: Empty or null file name(s)");
dir.mkdir("");

El ejemplo anterior prueba que QDir::mkdir() emite la advertencia correcta cuando se invoca con un nombre de archivo no válido.

Nota: message se interpretará como UTF-8.

void QTest::ignoreMessage(QtMsgType type, const QRegularExpression &messagePattern)

Ignora los mensajes creados por qDebug(), qInfo() o qWarning(). Si se emite el mensaje que coincida con messagePattern y el correspondiente type, se eliminará del registro de la prueba. Si la prueba ha finalizado y no se ha enviado el mensaje, se añadirá un fallo de prueba al registro de la prueba.

Nota: Al invocar esta función sólo se ignorará un mensaje. Si el mensaje que desea ignorar se emite dos veces, también tendrá que llamar a ignoreMessage() dos veces.

Se trata de una función sobrecargada.

void QTest::keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula el clic de key con un modifier opcional en un widget. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de hacer clic en la tecla.

Ejemplos:

QTest::keyClick(myWidget, Qt::Key_Escape);

QTest::keyClick(myWidget, Qt::Key_Escape, Qt::ShiftModifier, 200);

El primer ejemplo anterior simula el clic de la tecla escape sobre myWidget sin ningún modificador de teclado y sin retardo. El segundo ejemplo simula pulsar shift-escape en myWidget tras un retardo de 200 ms de la prueba.

Véase también QTest::keyClicks().

void QTest::keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula el clic de key con un modifier opcional en un widget. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de hacer clic en la tecla.

Ejemplo:

QTest::keyClick(myWidget, 'a');

El ejemplo anterior simula el clic de a sobre myWidget sin ningún modificador de teclado y sin retardo de la prueba.

Se trata de una función sobrecargada.

Véase también QTest::keyClicks().

void QTest::keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula el clic de key con un modifier opcional en un window. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de hacer clic en la tecla.

Ejemplos:

QTest::keyClick(&myWindow, Qt::Key_Escape);
QTest::keyClick(&myWindow, Qt::Key_Escape, Qt::ShiftModifier, 200);

El primer ejemplo anterior simula el clic de la tecla escape sobre myWindow sin ningún modificador de teclado y sin retardo. El segundo ejemplo simula pulsar shift-escape en myWindow tras un retardo de 200 ms de la prueba.

Se trata de una función sobrecargada.

Véase también QTest::keyClicks().

void QTest::keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula el clic de key con un modifier opcional en un window. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de hacer clic en la tecla.

Ejemplo:

QWidget myWindow;
QTest::keyClick(&myWindow, Qt::Key_Tab);

El ejemplo anterior simula el clic de a sobre myWindow sin ningún modificador de teclado y sin retardo de la prueba.

Se trata de una función sobrecargada.

Véase también QTest::keyClicks().

void QTest::keyClicks(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la pulsación de un sequence de teclas en un widget. Opcionalmente, se puede especificar un teclado modifier así como un delay (en milisegundos) de la prueba antes de cada pulsación de tecla.

Ejemplo:

QTest::keyClicks(myWidget, "hello world");

El ejemplo anterior simula la pulsación de la secuencia de teclas que representa "hola mundo" en myWidget sin ningún modificador de teclado y sin retardo de la prueba.

Véase también QTest::keyClick().

void QTest::keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Envía un evento de tecla Qt a widget con el key dado y un action asociado. Opcionalmente, se puede especificar un teclado modifier, así como un delay (en milisegundos) de la prueba antes de enviar el evento.

void QTest::keyEvent(QTest::KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Envía un evento de tecla Qt a widget con la tecla dada ascii y un action asociado. Opcionalmente, se puede especificar un teclado modifier, así como un delay (en milisegundos) de la prueba antes de enviar el evento.

Se trata de una función sobrecargada.

void QTest::keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Envía un evento de tecla Qt a window con el key dado y un action asociado. Opcionalmente, se puede especificar un teclado modifier, así como un delay (en milisegundos) de la prueba antes de enviar el evento.

Se trata de una función sobrecargada.

void QTest::keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Envía un evento de tecla Qt a window con la tecla dada ascii y un action asociado. Opcionalmente, se puede especificar un teclado modifier, así como un delay (en milisegundos) de la prueba antes de enviar el evento.

Se trata de una función sobrecargada.

void QTest::keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la pulsación de un key con un modifier opcional en un widget. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de pulsar la tecla.

Nota: En algún momento deberá soltar la tecla utilizando keyRelease().

Véase también QTest::keyRelease() y QTest::keyClick().

void QTest::keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la pulsación de un key con un modifier opcional en un widget. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de pulsar la tecla.

Nota: En algún momento deberá soltar la tecla utilizando keyRelease().

Se trata de una función sobrecargada.

Véase también QTest::keyRelease() y QTest::keyClick().

void QTest::keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la pulsación de un key con un modifier opcional en un window. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de pulsar la tecla.

Nota: En algún momento deberá soltar la tecla utilizando keyRelease().

Se trata de una función sobrecargada.

Véase también QTest::keyRelease() y QTest::keyClick().

void QTest::keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la pulsación de un key con un modifier opcional en un window. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de pulsar la tecla.

Nota: En algún momento deberá soltar la tecla utilizando keyRelease().

Se trata de una función sobrecargada.

Véase también QTest::keyRelease() y QTest::keyClick().

void QTest::keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la liberación de una key con una modifier opcional en una widget. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de liberar la clave.

Véase también QTest::keyPress() y QTest::keyClick().

void QTest::keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la liberación de un key con un modifier opcional en un widget. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de liberar la clave.

Se trata de una función sobrecargada.

Véase también QTest::keyClick().

void QTest::keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la liberación de un key con un modifier opcional en un window. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de liberar la clave.

Se trata de una función sobrecargada.

Véase también QTest::keyPress() y QTest::keyClick().

void QTest::keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

Simula la liberación de un key con un modifier opcional en un window. Si delay es mayor que 0, la prueba esperará delay milisegundos antes de liberar la clave.

Se trata de una función sobrecargada.

Véase también QTest::keyClick().

void QTest::keySequence(QWidget *widget, const QKeySequence &keySequence)

Simula la introducción de keySequence en widget.

Se trata de una función sobrecargada.

Véase también QTest::keyClick() y QTest::keyClicks().

void QTest::keySequence(QWindow *window, const QKeySequence &keySequence)

Simula la introducción de keySequence en window.

Se trata de una función sobrecargada.

Véase también QTest::keyClick() y QTest::keyClicks().

void QTest::mouseClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula el clic de un ratón button con un modifier opcional en un widget. La posición del clic está definida por pos; la posición por defecto es el centro del widget. Si se especifica delay, la prueba esperará la cantidad especificada de milisegundos antes de pulsar y antes de soltar el botón.

Véase también QTest::mousePress() y QTest::mouseRelease().

void QTest::mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula el clic de un ratón button con un modificador opcional stateKey en un window. La posición del clic está definida por pos; la posición por defecto es el centro de la ventana. Si se especifica delay, la prueba esperará la cantidad especificada de milisegundos antes de pulsar y antes de soltar el botón.

Se trata de una función sobrecargada.

Véase también QTest::mousePress() y QTest::mouseRelease().

void QTest::mouseDClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula el doble clic de un ratón button con un modifier opcional en un widget. La posición del clic se define mediante pos; la posición por defecto es el centro del widget. Si se especifica delay, la prueba esperará la cantidad especificada de milisegundos antes de cada pulsación y liberación.

Véase también QTest::mouseClick().

void QTest::mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula el doble clic de un ratón button con un modificador opcional stateKey en un window. La posición del clic se define mediante pos; la posición por defecto es el centro de la ventana. Si se especifica delay, la prueba esperará la cantidad especificada de milisegundos antes de cada pulsación y liberación.

Se trata de una función sobrecargada.

Véase también QTest::mouseClick().

void QTest::mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay = -1)

Mueve el puntero del ratón a un widget. Si no se especifica pos, el puntero del ratón se mueve al centro del widget. Si se indica delay (en milisegundos), la prueba esperará antes de mover el puntero del ratón.

void QTest::mouseMove(QWindow *window, QPoint pos = QPoint(), int delay = -1)

Mueve el puntero del ratón a un window. Si no se especifica pos, el puntero del ratón se mueve al centro de la ventana. Si se indica delay (en milisegundos), la prueba esperará antes de mover el puntero del ratón.

Se trata de una función sobrecargada.

void QTest::mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula la pulsación de un ratón button con un modifier opcional en un widget. La posición está definida por pos; la posición por defecto es el centro del widget. Si se especifica delay, la prueba esperará la cantidad especificada de milisegundos antes de la pulsación.

Véase también QTest::mouseRelease() y QTest::mouseClick().

void QTest::mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula la pulsación de un ratón button con un modificador opcional stateKey sobre un window. La posición está definida por pos; la posición por defecto es el centro de la ventana. Si se especifica delay, la prueba esperará la cantidad especificada de milisegundos antes de la pulsación.

Se trata de una función sobrecargada.

Véase también QTest::mouseRelease() y QTest::mouseClick().

void QTest::mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula la liberación de un ratón button con un modifier opcional en un widget. La posición de la liberación está definida por pos; la posición por defecto es el centro del widget. Si se especifica delay, la prueba esperará la cantidad de milisegundos especificada antes de soltar el botón; de lo contrario, esperará la cantidad de tiempo predeterminada (1 ms), que puede anularse mediante argumentos de línea de comandos.

Nota: Si desea probar un doble clic enviando eventos individualmente, especifique un retardo corto, mayor que el predeterminado, en ambos eventos de liberación del ratón. El total de los retardos de pulsar, soltar, pulsar y soltar debe ser inferior a QStyleHints::mouseDoubleClickInterval(). Pero si no necesitas comprobar el estado entre eventos, es mejor usar QTest::mouseDClick().

QSignalSpy doubleClickSpy(target, &TargetClass::doubleClicked);
const QPoint p(1, 2);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p);
QVERIFY(target.isPressed());
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.isPressed(), false);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.pressCount(), 2);
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(doubleClickSpy.count(), 1);

Véase también QTest::mousePress() y QTest::mouseClick().

void QTest::mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

Simula la liberación de un ratón button con un modificador opcional stateKey en window. La posición de la liberación está definida por pos; la posición por defecto es el centro de la ventana. Si se especifica delay, la prueba esperará la cantidad de milisegundos especificada antes de soltar el botón; de lo contrario, esperará una cantidad de tiempo predeterminada (1 ms), que puede anularse mediante argumentos de línea de comandos.

Nota: Si desea probar un doble clic enviando eventos individualmente, especifique un retardo corto, mayor que el predeterminado, en ambos eventos de liberación del ratón. El total de los retardos de pulsar, soltar, pulsar y soltar debe ser inferior a QStyleHints::mouseDoubleClickInterval(). Pero si no necesitas comprobar el estado entre eventos, es mejor usar QTest::mouseDClick().

QSignalSpy doubleClickSpy(target, &TargetClass::doubleClicked);
const QPoint p(1, 2);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p);
QVERIFY(target.isPressed());
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.isPressed(), false);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.pressCount(), 2);
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(doubleClickSpy.count(), 1);

Esta es una función sobrecargada.

Véase también QTest::mousePress() y QTest::mouseClick().

QTestData &QTest::newRow(const char *dataTag)

Añade una nueva fila a los datos de prueba actuales.

La salida de la prueba identificará la ejecución de la prueba con estos datos de prueba utilizando el nombre dataTag.

Devuelve una referencia QTestData que puede utilizarse para introducir datos, un valor por cada columna de la tabla.

Ejemplo:

void MyTestClass::addSingleStringRows()
{
    QTest::addColumn<QString>("aString");
    QTest::newRow("just.hello") << QString("hello");
    QTest::newRow("a.null.string") << QString();
}

Nota: Esta función sólo puede ser llamada como parte de la función de datos de una prueba que es invocada por el marco de pruebas.

Véase Data Driven Testing para un ejemplo más extenso.

Véase también addRow(), addColumn() y QFETCH().

int QTest::qExec(QObject *testObject, int argc = 0, char **argv = nullptr)

Ejecuta las pruebas declaradas en testObject. Además, se ejecutan las ranuras privadas initTestCase(), cleanupTestCase(), init() y cleanup() si existen. Consulte Creación de una prueba para obtener más detalles.

Opcionalmente, se pueden proporcionar los argumentos de línea de comandos argc y argv. Para obtener una lista de los argumentos reconocidos, consulte Qt Test Argumentos de la línea de comandos.

El siguiente ejemplo ejecutará todas las pruebas en MyTestObject:

MyTestObject test1;
QTest::qExec(&test1);

Esta función devuelve 0 si no ha fallado ninguna prueba, o un valor distinto de 0 si han fallado una o más pruebas o en caso de excepciones no controladas. (Las pruebas omitidas no influyen en el valor de retorno).

Para aplicaciones de prueba independientes, puede utilizarse la macro QTEST_MAIN() para declarar una función main() que analiza los argumentos de la línea de comandos y ejecuta las pruebas, evitando la necesidad de llamar explícitamente a esta función.

El valor de retorno de esta función es también el código de salida de la aplicación de prueba cuando se utiliza la macro QTEST_MAIN().

En el caso de las aplicaciones de prueba independientes, esta función no debe invocarse más de una vez, ya que las opciones de la línea de comandos para registrar la salida de la prueba en archivos y ejecutar funciones de prueba individuales no se comportarán correctamente.

Nota: Esta función no es reentrante, sólo se puede ejecutar una prueba a la vez. Una prueba que se ejecutó con qExec() no puede ejecutar otra prueba mediante qExec() y no se permite que los hilos llamen a qExec() simultáneamente.

Si ha creado los argumentos mediante programación, en lugar de obtenerlos de los argumentos de main(), probablemente le interese utilizar QTest::qExec(QObject *, const QStringList &) ya que es seguro para Unicode.

Véase también QTEST_MAIN(), QTEST_GUILESS_MAIN(), y QTEST_APPLESS_MAIN().

int QTest::qExec(QObject *testObject, const QStringList &arguments)

Se comporta de forma idéntica a qExec(QObject *, int, char**) pero toma un QStringList de arguments en lugar de una lista char**.

Se trata de una función sobrecargada.

QSharedPointer<QTemporaryDir> QTest::qExtractTestData(const QString &dirName)

Extrae un directorio de recursos al disco. El contenido se extrae recursivamente a una carpeta temporal. El contenido extraído se elimina automáticamente una vez que la última referencia al valor devuelto sale del ámbito.

dirName es el nombre del directorio a extraer de recursos.

Devuelve el directorio temporal donde se extrajeron los datos o null en caso de error.

[since 6.5] void QTest::qRegisterTestCase(const QString &name, QTest::TestEntryFunction entryFunction)

Registra la prueba name, con función de entrada entryFunction, en un registro central de casos de prueba para el binario actual.

name aparecerá en la lista cuando se ejecute el binario de prueba por lotes sin parámetros. Al ejecutar el binario de prueba con el argv[1] de name se llamará a entryFunction.

Esta función se introdujo en Qt 6.5.

[since 6.7] void QTest::qSleep(std::chrono::milliseconds msecs)

Sleeps para msecs, bloqueando la ejecución de la prueba.

Este método no procesará ningún evento y dejará la prueba sin respuesta. La comunicación de red puede agotarse durante la suspensión. Utilice QTest::qWait() para realizar la suspensión sin bloqueo.

msecs debe ser mayor que 0ms.

Nota: A partir de Qt 6.7, esta función se implementa usando std::this_thread::sleep_for, por lo que la precisión del tiempo empleado depende de la implementación de la Librería Estándar. Antes de Qt 6.7 esta función llamaba a nanosleep() en Unix o a Sleep() en Windows, por lo que la exactitud del tiempo empleado en esta función dependía del sistema operativo.

Ejemplo:

using namespace std::chrono_literals;
QTest::qSleep(250ms);

Esta función se introdujo en Qt 6.7.

Véase también QTest::qWait().

void QTest::qSleep(int ms)

Permanece inactivo durante ms milisegundos, bloqueando la ejecución de la prueba.

Equivale a llamar:

QTest::qSleep(std::chrono::milliseconds{ms});

Esta es una función sobrecargada.

[since 6.7] void QTest::qWait(std::chrono::milliseconds msecs)

Espera en msecs. Mientras espera, se procesarán los eventos y su prueba seguirá respondiendo a los eventos de la interfaz de usuario o de la comunicación de red.

Ejemplo:

    using namespace std::chrono_literals;
    int i = 0;
    while (myNetworkServerNotResponding() && i++ < 50)
        QTest::qWait(250ms);

El código anterior esperará hasta que el servidor de red responda un máximo de unos 12,5 segundos.

Las macros QTRY_* suelen ser una mejor opción que qWait(). qWait() siempre hace una pausa durante todo el tiempo de espera, lo que puede dejar la prueba inactiva y ralentizar la ejecución.

Las macros de QTRY_* sondean la condición hasta que tiene éxito o expira el tiempo de espera. De este modo, la prueba continúa lo antes posible y es más fiable. Si la condición sigue fallando, las macros duplican el tiempo de espera una vez e informan del nuevo valor para que puedas ajustarlo.

Por ejemplo, reescriba el código anterior como:

QTRY_VERIFY_WITH_TIMEOUT(!myNetworkServerNotResponding(), 12.5s);

Esta función se introdujo en Qt 6.7.

Véase también QTest::qSleep(), QSignalSpy::wait(), y QTRY_VERIFY_WITH_TIMEOUT().

void QTest::qWait(int msecs)

Espera a msecs. Equivale a llamar:

QTest::qWait(std::chrono::milliseconds{msecs});

Esta es una función sobrecargada.

[since 6.7] template <typename Functor> bool QTest::qWaitFor(Functor predicate, QDeadlineTimer deadline = QDeadlineTimer( defaultTryTimeout.load(std::memory_order_relaxed)))

Espera hasta que deadline haya expirado, o hasta que predicate devuelva verdadero, lo que ocurra primero.

Devuelve true si predicate devolvió verdadero en algún momento, de lo contrario devuelve false.

Ejemplo:

    MyObject obj;
    obj.startup();
    using namespace std::chrono_literals;
    const bool result = QTest::qWaitFor([&obj]() { return obj.isReady(); },
                                        QDeadlineTimer(3s));

El código anterior esperará a que el objeto esté listo, durante un máximo de tres segundos.

Esta función se introdujo en Qt 6.7.

template <typename Functor> bool QTest::qWaitFor(Functor predicate, int timeout)

Espera durante timeout milisegundos o hasta que predicate devuelva verdadero.

Esto es equivalente a llamar:

qWaitFor(predicate, QDeadlineTimer(timeout));

Esta es una función sobrecargada.

[since 6.10] bool QTest::qWaitForWindowActive(QWidget *widget, QDeadlineTimer timeout)

Devuelve true si widget está activo en timeout milisegundos. En caso contrario, devuelve false.

El método es útil en pruebas que llaman a QWidget::show() y dependen de que el widget esté realmente activo (es decir, que sea visible y tenga el foco) antes de continuar.

Nota: El método expirará y devolverá false si otra ventana impide que widget se active.

Nota: Dado que el foco es una propiedad exclusiva, widget puede perder su foco a otra ventana en cualquier momento - incluso después de que el método haya devuelto true.

Esta función se introdujo en Qt 6.10.

Véase también qWaitForWindowExposed() y QWidget::isActiveWindow().

[since 6.10] bool QTest::qWaitForWindowActive(QWindow *window, QDeadlineTimer timeout)

Devuelve true, si window está activo dentro de timeout. En caso contrario devuelve false.

El método es útil en pruebas que llaman a QWindow::show() y dependen de que la ventana esté realmente activa (es decir, que sea visible y tenga el foco) antes de continuar.

Nota: El método expirará y devolverá false si otra ventana impide que window se active.

Nota: Dado que el foco es una propiedad exclusiva, window puede perder su foco a otra ventana en cualquier momento - incluso después de que el método haya devuelto true.

Esta función se introdujo en Qt 6.10.

Ver también qWaitForWindowExposed(), qWaitForWindowFocused(), y QWindow::isActive().

[since 6.10] bool QTest::qWaitForWindowActive(QWidget *widget)

Esta función utiliza el tiempo de espera por defecto de 5 segundos.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.10.

[since 6.10] bool QTest::qWaitForWindowActive(QWindow *window)

Esta función utiliza el tiempo de espera por defecto de 5 segundos.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.10.

bool QTest::qWaitForWindowActive(QWidget *widget, int timeout)

La dirección timeout está en milisegundos.

Se trata de una función sobrecargada.

bool QTest::qWaitForWindowActive(QWindow *window, int timeout)

La dirección timeout está en milisegundos.

Se trata de una función sobrecargada.

[since 6.10] bool QTest::qWaitForWindowExposed(QWidget *widget, QDeadlineTimer timeout)

Devuelve true si widget se expone en timeout milisegundos. En caso contrario, devuelve false.

El método es útil en pruebas que llaman a QWidget::show() y dependen de que el widget esté realmente visible antes de continuar.

Nota: Una ventana asignada a pantalla puede no considerarse expuesta si el área cliente de la ventana no es visible, por ejemplo, porque está completamente cubierta por otras ventanas. En tales casos, el método expirará y devolverá false.

Esta función se introdujo en Qt 6.10.

Véase también qWaitForWindowActive(), QWidget::isVisible(), y QWindow::isExposed().

[since 6.10] bool QTest::qWaitForWindowExposed(QWindow *window, QDeadlineTimer timeout)

Devuelve true, si window está expuesta dentro de timeout. En caso contrario devuelve false.

El método es útil en pruebas que llaman a QWindow::show() y dependen de que la ventana sea realmente visible antes de continuar.

Nota: Una ventana asignada a pantalla puede no considerarse expuesta si el área cliente de la ventana no es visible, por ejemplo, porque está completamente cubierta por otras ventanas. En tales casos, el método expirará y devolverá false.

Esta función se introdujo en Qt 6.10.

Véase también qWaitForWindowActive() y QWindow::isExposed().

[since 6.10] bool QTest::qWaitForWindowExposed(QWidget *widget)

Esta función utiliza el tiempo de espera por defecto de 5 segundos.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.10.

[since 6.10] bool QTest::qWaitForWindowExposed(QWindow *window)

Esta función utiliza el tiempo de espera por defecto de 5 segundos.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.10.

bool QTest::qWaitForWindowExposed(QWidget *widget, int timeout)

La dirección timeout está en milisegundos.

Se trata de una función sobrecargada.

bool QTest::qWaitForWindowExposed(QWindow *window, int timeout)

La dirección timeout está en milisegundos.

Se trata de una función sobrecargada.

[since 6.7] bool QTest::qWaitForWindowFocused(QWidget *widget, QDeadlineTimer timeout)

Devuelve true, si widget es la ventana de foco dentro de timeout. En caso contrario devuelve false.

El método es útil en pruebas que llaman a QWidget::show() y dependen de que el widget tenga el foco (para recibir eventos de teclado, por ejemplo) antes de continuar.

Nota: El método expirará y devolverá false si otra ventana impide que widget se enfoque.

Nota: Dado que el foco es una propiedad exclusiva, widget puede perder su foco a otra ventana en cualquier momento - incluso después de que el método haya devuelto true.

Esta función se introdujo en Qt 6.7.

Ver también qWaitForWindowExposed(), qWaitForWindowActive(), y QGuiApplication::focusWindow().

[since 6.7] bool QTest::qWaitForWindowFocused(QWindow *window, QDeadlineTimer timeout)

Devuelve true, si window es la ventana de foco dentro de timeout. En caso contrario devuelve false.

El método es útil en pruebas que llaman a QWindow::show() y dependen de que la ventana tenga el foco (para recibir eventos de teclado, por ejemplo) antes de continuar.

Nota: El método expirará y devolverá false si otra ventana impide que window se enfoque.

Nota: Dado que el foco es una propiedad exclusiva, window puede perder su foco a otra ventana en cualquier momento - incluso después de que el método haya devuelto true.

Esta función se introdujo en Qt 6.7.

Ver también qWaitForWindowExposed(), qWaitForWindowActive(), y QGuiApplication::focusWindow().

[since 6.10] bool QTest::qWaitForWindowFocused(QWidget *widget)

Esta función utiliza el tiempo de espera por defecto de 5 segundos.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.10.

[since 6.10] bool QTest::qWaitForWindowFocused(QWindow *window)

Esta función utiliza el tiempo de espera por defecto de 5 segundos.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.10.

void QTest::setBenchmarkResult(qreal result, QTest::QBenchmarkMetric metric)

Establece el resultado del benchmark para esta función de prueba en result.

Utilice esta función si desea informar de los resultados del benchmark sin utilizar la macro QBENCHMARK. Utilice metric para especificar cómo Qt Test debe interpretar los resultados.

El contexto para el resultado será el nombre de la función de prueba y cualquier etiqueta de datos de la función _data. Esta función sólo puede invocarse una vez en cada función de prueba; las llamadas posteriores sustituirán a los resultados anteriores.

Tenga en cuenta que el argumento de línea de comandos -iterations no tiene ningún efecto en las funciones de prueba sin la macro QBENCHMARK.

[noexcept, since 6.8] void QTest::setThrowOnFail(bool enable)

Habilita (enable = true) o deshabilita ( enable = false) el lanzamiento en fallos de QCOMPARE()/QVERIFY() (en lugar de limitarse a volver del contexto de la función inmediatamente circundante).

La función se cuenta por referencias: Si llamas a esta función N veces con true, necesitas llamarla N veces con false para volver a donde empezaste.

Esta llamada no tiene efecto cuando la macro C++ QTEST_THROW_ON_FAIL está definida.

Nota: Debes compilar tus pruebas con las excepciones activadas para utilizar esta función.

Esta función se introdujo en Qt 6.8.

Ver también setThrowOnSkip(), ThrowOnFailEnabler, ThrowOnFailDisabler, y QTEST_THROW_ON_FAIL.

[noexcept, since 6.8] void QTest::setThrowOnSkip(bool enable)

Habilita (enable = true) o deshabilita ( enable = false) el lanzamiento en QSKIP() (en lugar de simplemente volver del contexto de la función inmediatamente circundante).

La función se cuenta por referencias: Si llama a esta función N veces con true, necesita llamarla N veces con false para volver a donde empezó.

Esta llamada no tiene efecto cuando la macro C++ QTEST_THROW_ON_SKIP está definida.

Nota: Debes compilar tus pruebas con las excepciones activadas para utilizar esta función.

Esta función se introdujo en Qt 6.8.

Ver también setThrowOnFail(), ThrowOnSkipEnabler, ThrowOnSkipDisabler, y QTEST_THROW_ON_SKIP.

char *QTest::toHexRepresentation(const char *ba, qsizetype length)

Devuelve un puntero a una cadena que es la cadena ba representada como una secuencia de caracteres hexadecimales separados por espacios. Si la entrada se considera demasiado larga, se trunca. Una trucación se indica en la cadena devuelta como una elipsis al final. El llamante tiene la propiedad del puntero devuelto y debe asegurarse de que se pasa posteriormente al operador delete[].

length es la longitud de la cadena ba.

char *toString(QSizePolicy sp)

Devuelve una representación textual de la política de tamaño sp.

Se trata de una función sobrecargada.

template <typename T> char *QTest::toString(const T &value)

Devuelve una representación textual de value. Esta función es utilizada por QCOMPARE() para mostrar información detallada en caso de fallo de la prueba.

Puede añadir especializaciones o sobrecargas de esta función a su prueba para habilitar la salida detallada.

Nota: A partir de Qt 5.5, es preferible proporcionar una función toString() en el espacio de nombres del tipo en lugar de especializar esta plantilla. Si tu código necesita seguir funcionando con la QTestLib de Qt 5.4 o anterior, necesitas seguir usando la especialización.

Nota: El invocador de toString() debe borrar los datos devueltos usando delete[]. Su implementación debe devolver una cadena creada con new[] o qstrdup(). La forma más sencilla de hacerlo es crear un QByteArray o QString y llamar a QTest::toString() sobre él (ver el segundo ejemplo más abajo).

Ejemplo de especialización (Qt ≤ 5.4):

namespace QTest {
    template<>
    char *toString(const MyPoint &point)
    {
        const QByteArray ba("MyPoint("
                            + QByteArray::number(point.x()) + ", "
                            + QByteArray::number(point.y()) + ')');
        return qstrdup(ba.data());
    }
}

El ejemplo anterior define una especialización toString() para una clase llamada MyPoint. Siempre que falle una comparación de dos instancias de MyPoint, QCOMPARE() llamará a esta función para mostrar el contenido de MyPoint en el registro de pruebas.

Mismo ejemplo, pero con sobrecarga (Qt ≥ 5.5):

namespace {
    char *toString(const MyPoint &point)
    {
        return QTest::toString("MyPoint(" +
                               QByteArray::number(point.x()) + ", " +
                               QByteArray::number(point.y()) + ')');
    }
}

Véase también QCOMPARE().

char *toString(QSizePolicy::ControlType ct)

Devuelve una representación textual del tipo de control ct.

Se trata de una función sobrecargada.

char *toString(QSizePolicy::ControlTypes cts)

Devuelve una representación textual de los tipos de control cts.

Se trata de una función sobrecargada.

char *toString(QSizePolicy::Policy p)

Devuelve una representación textual de la política p.

Se trata de una función sobrecargada.

char *QTest::toString(const QByteArray &ba)

Devuelve una representación textual de la matriz de bytes ba.

Se trata de una función sobrecargada.

Véase también QTest::toHexRepresentation().

char *QTest::toString(const QCborError &c)

Devuelve una representación textual del error CBOR dado c.

Se trata de una función sobrecargada.

char *QTest::toString(const QChar &character)

Devuelve una representación textual de la dirección character.

Se trata de una función sobrecargada.

char *QTest::toString(const QDate &date)

Devuelve una representación textual de la dirección date.

Se trata de una función sobrecargada.

char *QTest::toString(const QDateTime &dateTime)

Devuelve una representación textual de la fecha y hora especificadas por dateTime.

Se trata de una función sobrecargada.

[since 6.5] char *QTest::toString(const QKeySequence &ks)

Devuelve una representación textual de la secuencia de teclas ks.

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.5.

char *QTest::toString(const QLatin1StringView &string)

Devuelve una representación textual de la dirección string.

Se trata de una función sobrecargada.

char *QTest::toString(const QPoint &point)

Devuelve una representación textual de la dirección point.

Se trata de una función sobrecargada.

char *QTest::toString(const QPointF &point)

Devuelve una representación textual de la dirección point.

Se trata de una función sobrecargada.

char *QTest::toString(const QRect &rectangle)

Devuelve una representación textual de la dirección rectangle.

Se trata de una función sobrecargada.

char *QTest::toString(const QRectF &rectangle)

Devuelve una representación textual de la dirección rectangle.

Se trata de una función sobrecargada.

char *QTest::toString(const QSize &size)

Devuelve una representación textual de la dirección size.

Se trata de una función sobrecargada.

char *QTest::toString(const QSizeF &size)

Devuelve una representación textual de la dirección size.

Se trata de una función sobrecargada.

char *QTest::toString(const QString &string)

Devuelve una representación textual de la dirección string.

Se trata de una función sobrecargada.

char *QTest::toString(const QStringView &string)

Devuelve una representación textual de la dirección string.

Se trata de una función sobrecargada.

char *QTest::toString(const QTime &time)

Devuelve una representación textual de la dirección time.

Se trata de una función sobrecargada.

char *QTest::toString(const QUrl &url)

Devuelve una representación textual de la dirección url.

Se trata de una función sobrecargada.

char *QTest::toString(const QUuid &uuid)

Devuelve una representación textual de la dirección uuid.

Se trata de una función sobrecargada.

char *QTest::toString(const QVariant &variant)

Devuelve una representación textual de la dirección variant.

Se trata de una función sobrecargada.

char *QTest::toString(const QVector2D &v)

Devuelve una representación textual del vector 2D v.

Se trata de una función sobrecargada.

char *QTest::toString(const QVector3D &v)

Devuelve una representación textual del vector 3D v.

Se trata de una función sobrecargada.

char *QTest::toString(const QVector4D &v)

Devuelve una representación textual del vector 4D v.

Se trata de una función sobrecargada.

template <typename T1, typename T2> char *QTest::toString(const std::pair<T1, T2> &pair)

Devuelve una representación textual de pair.

Se trata de una función sobrecargada.

template <typename... Types> char *QTest::toString(const std::tuple<Types...> &tuple)

Devuelve una representación textual de la dirección tuple.

Se trata de una función sobrecargada.

char *QTest::toString(std::nullptr_t)

Devuelve una cadena que contiene nullptr.

Se trata de una función sobrecargada.

QTest::QTouchEventWidgetSequence QTest::touchEvent(QWidget *widget, QPointingDevice *device, bool autoCommit = true)

Crea y devuelve un QTouchEventSequence para el device para simular eventos para widget.

Al añadir eventos táctiles a la secuencia, widget también se utilizará para traducir la posición proporcionada a coordenadas de pantalla, a menos que se proporcione otro widget en las respectivas llamadas a press(), move(), etc.

Los eventos táctiles se registran en el sistema de eventos cuando se llama al destructor de QTouchEventSequence (es decir, cuando el objeto devuelto sale del ámbito), a menos que autoCommit sea falso. Cuando autoCommit es falso, commit() tiene que ser llamado manualmente.

createTouchDevice() puede ser llamado para crear un dispositivo táctil de prueba para su uso con esta función.

QTest::QTouchEventSequence QTest::touchEvent(QWindow *window, QPointingDevice *device, bool autoCommit = true)

Crea y devuelve un QTouchEventSequence para el device para simular eventos para window.

Al añadir eventos táctiles a la secuencia, window también se utilizará para traducir la posición proporcionada a coordenadas de pantalla, a menos que se proporcione otra ventana en las respectivas llamadas a press(), move(), etc.

Los eventos táctiles se registran en el sistema de eventos cuando se llama al destructor de QTouchEventSequence (es decir, cuando el objeto devuelto sale del ámbito), a menos que autoCommit sea falso. Cuando autoCommit es falso, commit() tiene que ser llamado manualmente.

createTouchDevice() puede ser llamado para crear un dispositivo táctil de prueba para su uso con esta función.

[since 6.8] void QTest::wheelEvent(QWindow *window, QPointF pos, QPoint angleDelta, QPoint pixelDelta = QPoint(0, 0), Qt::KeyboardModifiers stateKey = Qt::NoModifier, Qt::ScrollPhase phase = Qt::NoScrollPhase)

Simula un evento de rueda dentro de window en la posición pos en coordenadas locales de la ventana. angleDelta contiene el ángulo de rotación de la rueda. Un valor positivo significa rotación hacia delante, y uno negativo hacia atrás. pixelDelta contiene la distancia de desplazamiento en píxeles en pantalla. Este valor puede ser nulo. Los estados del teclado en el momento del evento se especifican en stateKey. La fase de desplazamiento del evento se especifica en phase.

Esta función se introdujo en Qt 6.8.

Documentación de macros

QBENCHMARK

Esta macro se utiliza para medir el rendimiento del código dentro de una prueba. El código que se va a evaluar está contenido en un bloque de código que sigue a esta macro.

Por ejemplo:

void TestBenchmark::simple()
{
    QString str1 = u"This is a test string"_s;
    QString str2 = u"This is a test string"_s;
    QCOMPARE(str1.localeAwareCompare(str2), 0);
    QBENCHMARK {
        str1.localeAwareCompare(str2);
    }
}

Véase también Creación de un benchmark y Escritura de un benchmark.

QBENCHMARK_ONCE

La macro QBENCHMARK_ONCE sirve para medir el rendimiento de un bloque de código ejecutándolo una vez.

Esta macro se utiliza para medir el rendimiento del código dentro de una prueba. El código a medir está contenido en un bloque de código que sigue a esta macro.

A diferencia de QBENCHMARK, el contenido del bloque de código sólo se ejecuta una vez. El tiempo transcurrido se reportará como "0" si es demasiado corto para ser medido por el backend seleccionado.

Véase también Creación de un benchmark y Escritura de un benchmark.

QCOMPARE(actual, expected)

La macro QCOMPARE() compara un valor actual con un valor expected utilizando el operador de igualdad. Si actual y expected coinciden, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior.

Respete siempre la semántica de los parámetros de QCOMPARE(). El primer parámetro que se le pasa debe ser siempre el valor real producido por el código bajo prueba, mientras que el segundo parámetro debe ser siempre el valor esperado. Cuando los valores no coinciden, QCOMPARE() los imprime con las etiquetas Actual y Esperado. Si se intercambia el orden de los parámetros, la depuración de una prueba fallida puede ser confusa y las pruebas que esperan cero pueden fallar debido a errores de redondeo.

QCOMPARE() intenta mostrar el contenido de los valores si la comparación falla, de forma que sea visible en el registro de la prueba por qué falló la comparación.

Ejemplo:

QCOMPARE(QString("hello").toUpper(), QString("HELLO"));

Al comparar tipos de coma flotante (float, double, y qfloat16), qFuzzyCompare() se utiliza para valores finitos. Si qFuzzyIsNull() es verdadero para ambos valores, también se consideran iguales. Los infinitos coinciden si tienen el mismo signo, y cualquier NaN como valor real coincide con cualquier NaN como valor esperado (aunque NaN != NaN, incluso cuando son idénticos).

Al comparar QList, se pueden pasar matrices y listas de inicializadores del tipo de valor como valor esperado:

    const int expected[] = {8, 10, 12, 16, 20, 24};
    QCOMPARE(QFontDatabase::standardSizes(), expected);

Tenga en cuenta que el uso de listas de inicializadores requiere definir una macro de ayuda para evitar que el preprocesador interprete las comas como delimitadores de argumentos de macros:

 #define ARG(...) __VA_ARGS__
     QCOMPARE(QFontDatabase::standardSizes(), ARG({8, 10, 12, 16, 20, 24}));
 #undef ARG

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores de salida en el registro de pruebas.

Ejemplo:

char *toString(const MyType &t)
{
    char *repr = new char[t.reprSize()];
    t.writeRepr(repr);
    return repr;
}

El retorno de toString() debe ser un new char []. Es decir, se liberará con delete[] (en lugar de free() o delete simple) una vez que el código de llamada haya terminado con él.

Véase también QVERIFY(), QTRY_COMPARE(), QTest::toString(), QEXPECT_FAIL(), QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT(), y QCOMPARE_GE().

[since 6.9] QCOMPARE_3WAY(lhs, rhs, order)

La macro QCOMPARE_3WAY() aplica el operador de comparación triple <=> a las expresiones de entrada lhs y rhs, y comprueba si el resultado es order. Si es cierto, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior. La macro sólo acepta tipos de ordenación Qt:: y std:: como argumento order, de lo contrario afirma.

Nota: order puede ser un tipo de ordenación Qt:: aunque decltype(lhs <=> rhs) sea std. El resultado de la operación decltype(lhs <=> rhs) debe tener la misma fuerza que order. En caso contrario, la aplicación de la macro producirá un error de compilación. Por ejemplo, si el resultado de decltype(lhs <=> rhs) tiene un tipo de ordenación débil, el argumento order no puede tener tipos de ordenación parciales o fuertes.

Nota: La macro sólo funciona si el compilador admite el operador <=>; en caso contrario, afirma estáticamente que la función prerrequisito no está disponible. Antes de utilizar una macro, compruebe siempre si __cpp_lib_three_way_comparison está definida y, en caso contrario, utilice QSKIP.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores para la salida en el registro de prueba.

Esta macro se introdujo en Qt 6.9.

[since 6.4] QCOMPARE_EQ(computed, baseline)

La macro QCOMPARE_EQ() comprueba que computed es igual a baseline utilizando el operador de igualdad. Si es cierto, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior.

En general, es similar a llamar a QVERIFY(computed == baseline); pero imprime un mensaje de error formateado informando de las expresiones y valores de los argumentos de computed y baseline en caso de fallo.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores de salida en el registro de pruebas.

Nota: A diferencia de QCOMPARE(), esta macro no proporciona sobrecargas para tipos y punteros personalizados. Por tanto, si se pasan, por ejemplo, dos valores const char * como parámetros, se compararán punteros, mientras que QCOMPARE() realiza una comparación de cadenas de estilo C.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT(), y QCOMPARE_GE().

[since 6.4] QCOMPARE_GE(computed, baseline)

La macro QCOMPARE_GE() comprueba que computed es al menos baseline utilizando el operador mayor-que-o-igual-a. Si es cierto, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior.

En general, es similar a llamar a QVERIFY(computed >= baseline); pero imprime un mensaje de error formateado informando de las expresiones y valores de los argumentos computed y baseline en caso de fallo.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores de salida en el registro de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), y QCOMPARE_GT().

[since 6.4] QCOMPARE_GT(computed, baseline)

La macro QCOMPARE_GT() comprueba que computed es mayor que baseline utilizando el operador mayor que. Si es cierto, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior.

En general, es similar a llamar a QVERIFY(computed > baseline); pero imprime un mensaje de error formateado informando de las expresiones y valores de los argumentos de computed y baseline en caso de fallo.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores de salida en el registro de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), y QCOMPARE_GE().

[since 6.4] QCOMPARE_LE(computed, baseline)

La macro QCOMPARE_LE() comprueba que computed es como máximo baseline utilizando el operador menos-que-o-igual-a. Si es cierto, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior.

En general, es similar a llamar a QVERIFY(computed <= baseline); pero imprime un mensaje de error formateado informando de las expresiones y valores de los argumentos computed y baseline en caso de fallo.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores de salida en el registro de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_GT(), y QCOMPARE_GE().

[since 6.4] QCOMPARE_LT(computed, baseline)

La macro QCOMPARE_LT() comprueba que computed es menor que baseline utilizando el operador menor que. Si es cierto, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior.

En general, es similar a llamar a QVERIFY(computed < baseline); pero imprime un mensaje de error formateado informando de las expresiones y valores de los argumentos de computed y baseline en caso de fallo.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores de salida en el registro de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LE(), QCOMPARE_GT(), y QCOMPARE_GE().

[since 6.4] QCOMPARE_NE(computed, baseline)

La macro QCOMPARE_NE() comprueba que computed no es igual a baseline utilizando el operador de desigualdad. Si es cierto, la ejecución continúa. En caso contrario, se registra un fallo en el registro de pruebas y la función de prueba regresa sin intentar ninguna comprobación posterior.

En general, es similar a llamar a QVERIFY(computed != baseline); pero imprime un mensaje de error formateado informando de las expresiones y valores de los argumentos de computed y baseline en caso de fallo.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Para sus propias clases, puede sobrecargar QTest::toString() para dar formato a los valores de salida en el registro de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_EQ(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT(), y QCOMPARE_GE().

QEXPECT_FAIL(dataIndex, comment, mode)

La macro QEXPECT_FAIL() marca el siguiente QCOMPARE() o QVERIFY() como un fallo esperado. En lugar de añadir un fallo al registro de la prueba, se informará de un fallo esperado.

Si un QVERIFY() o QCOMPARE() se marca como un fallo esperado, pero en su lugar pasa, se escribirá un pase inesperado (XPASS) en el registro de la prueba y se contará como un fallo de la prueba.

El parámetro dataIndex describe para qué entrada de los datos de prueba se espera el fallo. Introduzca una cadena vacía ("") si el fallo se espera para todas las entradas o si no existen datos de prueba.

comment se añadirá al registro de pruebas para el fallo esperado.

mode es un QTest::TestFailMode y establece si la prueba debe continuar ejecutándose o no. El mode se aplica independientemente de si se produce el fallo esperado de la prueba.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Ejemplo 1

QEXPECT_FAIL("", "Will fix in the next release", Continue);
QCOMPARE(i, 42);
QCOMPARE(j, 43);

En el ejemplo anterior, se escribirá un fallo esperado en la salida de la prueba si la variable i no es 42. Si la variable i es 42, se escribirá en su lugar un aprobado inesperado. QEXPECT_FAIL() no influye en la segunda sentencia QCOMPARE() del ejemplo.

Ejemplo 2:

QEXPECT_FAIL("data27", "Oh my, this is soooo broken", Abort);
QCOMPARE(i, 42);

La función de prueba anterior no seguirá ejecutándose para la entrada de datos de prueba data27 (independientemente del valor de i).

Véase también QTest::TestFailMode, QVERIFY(), y QCOMPARE().

QFAIL(message)

Esta macro puede utilizarse para forzar el fallo de una prueba. La prueba deja de ejecutarse y el fallo message se añade al registro de la prueba.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Ejemplo:

if (sizeof(int) != 4)
    QFAIL("This test has not been ported to this platform yet.");

QFETCH(type, name)

La macro fetch crea una variable local llamada name con el tipo type en la pila. name y type deben coincidir con una columna de la tabla de datos de la prueba. Esto se afirma y la prueba abortará si la afirmación falla.

Supongamos que una prueba tiene los siguientes datos:

void TestQString::toInt_data()
{
    QTest::addColumn<QString>("aString");
    QTest::addColumn<int>("expected");

    QTest::newRow("positive+value") << "42" << 42;
    QTest::newRow("negative-value") << "-42" << -42;
    QTest::newRow("zero") << "0" << 0;
}

Los datos de la prueba tienen dos elementos, un QString llamado aString y un entero llamado expected. Para obtener estos valores en la prueba real:

void TestQString::toInt()
{
     QFETCH(QString, aString);
     QFETCH(int, expected);

     QCOMPARE(aString.toInt(), expected);
}

aString y expected son variables en la pila que se inicializan con los datos de prueba actuales.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas. La función de prueba debe tener una función _data.

QFETCH_GLOBAL(type, name)

Esta macro obtiene una variable denominada name con el tipo type de una fila de la tabla de datos globales. name y type deben coincidir con una columna de la tabla de datos globales. Esto se afirma y la prueba abortará si la afirmación falla.

Supongamos que una prueba tiene los siguientes datos:

void TestQLocale::initTestCase_data()
{
    QTest::addColumn<QLocale>("locale");
    QTest::newRow("C") << QLocale::c();
    QTest::newRow("UKish") << QLocale("en_GB");
    QTest::newRow("USAish") << QLocale(QLocale::English, QLocale::UnitedStates);
}

void TestQLocale::roundTripInt_data()
{
    QTest::addColumn<int>("number");
    QTest::newRow("zero") << 0;
    QTest::newRow("one") << 1;
    QTest::newRow("two") << 2;
    QTest::newRow("ten") << 10;
}

Los datos propios de la prueba son un único número por fila. En este caso, initTestCase_data() también proporciona una configuración regional por fila. Por lo tanto, esta prueba se ejecutará con cada combinación de configuración regional de la segunda y número de la primera. Así, con cuatro filas en la tabla global y tres en la local, la función de prueba se ejecuta para 12 casos de prueba distintos (4 * 3 = 12).

void TestQLocale::roundTripInt()
{
    QFETCH_GLOBAL(QLocale, locale);
    QFETCH(int, number);
    bool ok;
    QCOMPARE(locale.toInt(locale.toString(number), &ok), number);
    QVERIFY(ok);
}

La localización se lee de la tabla de datos global utilizando QFETCH_GLOBAL(), y el número se lee de la tabla de datos local utilizando QFETCH().

Nota: Esta macro sólo puede utilizarse en métodos de prueba de una clase con un método initTestCase_data().

QFINDTESTDATA(filename)

Devuelve un QString para el archivo de datos de prueba al que hace referencia filename, o un QString vacío si no se puede encontrar el archivo de datos de prueba.

Esta macro permite que la prueba cargue datos de un archivo externo sin tener que codificar un nombre de archivo absoluto en la prueba, o utilizar rutas relativas que pueden dar lugar a errores.

La ruta devuelta será la primera ruta de la siguiente lista que resuelva a un archivo o directorio existente:

Si el archivo/directorio nombrado no existe en ninguna de estas ubicaciones, se imprime una advertencia en el registro de la prueba.

Por ejemplo, en este código

bool tst_MyXmlParser::parse()
{
    MyXmlParser parser;
    QString input = QFINDTESTDATA("testxml/simple1.xml");
    QVERIFY(parser.parse(input));
}

El archivo testdata se resolverá como el primer archivo existente de:

  • /home/user/build/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml
  • /usr/local/Qt-5.0.0/tests/tst_myxmlparser/testxml/simple1.xml
  • /home/user/sources/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml

Esto permite que la prueba encuentre su testdata independientemente de si la prueba ha sido instalada, e independientemente de si el árbol de construcción de la prueba es igual al árbol fuente de la prueba.

Nota: la detección fiable de los datos de prueba desde el directorio fuente requiere que se utilice qmake, o que se defina la macro QT_TESTCASE_BUILDDIR para que apunte al directorio de trabajo desde el que se invoca al compilador, o que sólo se pasen al compilador rutas absolutas a los archivos fuente. En caso contrario, no se puede determinar la ruta absoluta del directorio fuente.

Nota: La macro QT_TESTCASE_BUILDDIR también se define implícitamente si se utiliza CMake y el módulo QtTest está enlazado con el objetivo. Puede cambiar el valor predeterminado QT_TESTCASE_BUILDDIR estableciendo la propiedad QT_TESTCASE_BUILDDIR en el objetivo.

Nota: Para las pruebas que utilizan la macro QTEST_APPLESS_MAIN() para generar una función main(), QFINDTESTDATA no intentará encontrar datos de prueba relativos a QCoreApplication::applicationDirPath(). En la práctica, esto significa que las pruebas que utilicen QTEST_APPLESS_MAIN() no encontrarán sus datos de prueba si se ejecutan desde un árbol de construcción sombra.

QSKIP(description)

Si se llama desde una función de prueba, la macro QSKIP() detiene la ejecución de la prueba sin añadir un fallo al registro de pruebas. Puede utilizarla para omitir pruebas que no tendrían sentido en la configuración actual. Por ejemplo, una prueba de renderizado de fuentes puede llamar a QSKIP() si las fuentes necesarias no están instaladas en el sistema de prueba.

El texto description se añade al registro de la prueba y debe contener una explicación de por qué no se ha podido ejecutar la prueba.

Si la prueba se basa en datos, cada llamada a QSKIP() en la función de prueba omitirá sólo la fila actual de datos de prueba, por lo que una llamada incondicional a QSKIP() producirá un mensaje de omisión en el registro de prueba por cada fila de datos de prueba.

Si se llama desde una función _data, la macro QSKIP() detendrá la ejecución de la función _data e impedirá la ejecución de la función de prueba asociada. Esto omite por completo una prueba basada en datos. Para omitir filas individuales, hágalas condicionales utilizando un simple if (condition) newRow(...) << ... en la función _data, en lugar de utilizar QSKIP() en la función de prueba.

Si se llama desde initTestCase_data(), la macro QSKIP() omitirá todas las funciones de prueba y _data. Si se llama desde initTestCase() cuando no hay initTestCase_data(), o cuando sólo establece una fila, QSKIP() saltará igualmente toda la prueba. Sin embargo, si initTestCase_data() contiene más de una fila, entonces initTestCase() es llamado (seguido por cada prueba y finalmente la envoltura) una vez por cada fila del mismo. Por lo tanto, una llamada a QSKIP() en initTestCase() simplemente saltará todas las funciones de prueba para la fila actual de datos globales, establecida por initTestCase_data().

Nota: Esta macro sólo puede utilizarse en una función de prueba o en una función _data invocada por el marco de pruebas.

Ejemplo:

if (!QSqlDatabase::drivers().contains("SQLITE"))
    QSKIP("This test requires the SQLITE database driver");
Omisión de errores conocidos

Si una prueba expone un fallo conocido que no se solucionará inmediatamente, utilice la macro QEXPECT_FAIL() para documentar el fallo y hacer referencia al identificador de seguimiento de fallos del problema conocido. Cuando se ejecute la prueba, los fallos esperados se marcarán como XFAIL en la salida de la prueba y no se contarán como fallos al establecer el código de retorno del programa de prueba. Si no se produce un fallo esperado, se indicará XPASS (pase inesperado) en la salida de la prueba y se contará como fallo de la prueba.

Para fallos conocidos, QEXPECT_FAIL() es mejor que QSKIP() porque un desarrollador no puede arreglar el fallo sin que un resultado XPASS le recuerde que la prueba también necesita ser actualizada. Si se utiliza QSKIP(), no hay ningún recordatorio para revisar o volver a activar la prueba, sin lo cual no se informará de las regresiones posteriores.

Véase también QEXPECT_FAIL() y Seleccionar mecanismos apropiados para excluir pruebas.

QTEST(actual, testElement)

QTEST() es una macro de conveniencia para QCOMPARE() que compara el valor actual con el elemento testElement de los datos de la prueba. Si no existe tal elemento, la prueba afirma.

Aparte de esto, QTEST() se comporta exactamente igual que QCOMPARE().

En lugar de escribir:

QFETCH(QString, myString);
QCOMPARE(QString("hello").toUpper(), myString);

puede escribir:

QTEST(QString("hello").toUpper(), "myString");

Véase también QCOMPARE().

QTEST_APPLESS_MAIN(TestClass)

Implementa una función main() que ejecuta todas las pruebas en TestClass.

Se comporta como QTEST_MAIN(), pero no instancia un objeto QApplication. Utilice esta macro para pruebas autónomas no GUI realmente sencillas.

Véase también QTEST_MAIN().

QTEST_GUILESS_MAIN(TestClass)

Implementa una función main() que instancia un objeto QCoreApplication y el TestClass, y ejecuta todas las pruebas en el orden en que fueron definidas. Utilice esta macro para crear ejecutables independientes.

Se comporta como QTEST_MAIN(), pero instanciando un objeto QCoreApplication en lugar de QApplication. Utilice esta macro si su caso de prueba no necesita la funcionalidad ofrecida por QApplication, pero el bucle de eventos sigue siendo necesario.

Véase también QTEST_MAIN().

QTEST_MAIN(TestClass)

Implementa una función main() que instancia un objeto de aplicación y el TestClass, y ejecuta todas las pruebas en el orden en que fueron definidas. Utilice esta macro para crear ejecutables independientes.

Si se define QT_WIDGETS_LIB, el objeto de aplicación será un QApplication, si se define QT_GUI_LIB, el objeto de aplicación será un QGuiApplication, de lo contrario será un QCoreApplication. Si se utiliza qmake y la configuración incluye QT += widgets, entonces QT_WIDGETS_LIB se definirá automáticamente. Del mismo modo, si se utiliza qmake y la configuración incluye QT += gui, entonces QT_GUI_LIB se definirá automáticamente.

Nota: En plataformas que tienen la navegación por teclado habilitada por defecto, esta macro la deshabilitará forzosamente si se define QT_WIDGETS_LIB. Esto se hace para simplificar el uso de eventos de teclado al escribir autotests. Si desea escribir un caso de prueba que utilice la navegación por teclado, deberá activarla en las funciones initTestCase() o init() de su caso de prueba llamando a QApplication::setNavigationMode().

Ejemplo:

QTEST_MAIN(TestQString)

Véase también QTEST_APPLESS_MAIN(), QTEST_GUILESS_MAIN(), QTest::qExec() y QApplication::setNavigationMode().

[since 6.8] QTEST_THROW_ON_FAIL

Cuando se define, QCOMPARE()/QVERIFY() etc siempre lanzan en caso de fallo. QTest::setThrowOnFail() deja de tener efecto.

Definir esta macro es útil si desea utilizar QCOMPARE() o QVERIFY() en funciones que no tienen un tipo de retornovoid. Sin esta macro definida, QCOMPARE(), por ejemplo, se expande a una sentencia que incluye return;, por lo que no puede usarse en funciones (o lambdas) que devuelvan algo distinto de void, por ejemplo QString. Esto incluye el caso en el que lanzar excepciones se habilita sólo en tiempo de ejecución (usando QTest::setThrowOnFail(true)). Con esta macro definida, QCOMPARE() en su lugar se expande a una sentencia sin return;, que es utilizable desde cualquier función.

Esta macro se introdujo en Qt 6.8.

[since 6.8] QTEST_THROW_ON_SKIP

Cuando se define, QSKIP() siempre lanza. QTest::setThrowOnSkip() deja de tener efecto.

Definir esta macro es útil si desea utilizar QSKIP() en funciones que no tienen un tipo de retornovoid. Sin esta macro definida, QSKIP(), por ejemplo, se expande a una sentencia que incluye return;, por lo que no puede usarse en funciones (o lambdas) que devuelvan algo distinto de void, por ejemplo QString. Esto incluye el caso en el que lanzar excepciones se habilita sólo en tiempo de ejecución (usando QTest::setThrowOnSkip(true)). Con esta macro definida, QSKIP() en su lugar se expande a una sentencia sin return;, que es utilizable desde cualquier función.

Esta macro se introdujo en Qt 6.8.

QTRY_COMPARE(actual, expected)

Realiza una comparación de los valores actual y expected invocando QTRY_COMPARE_WITH_TIMEOUT() con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Véase también QTRY_COMPARE_WITH_TIMEOUT(), QCOMPARE(), QVERIFY(), QTRY_VERIFY() y QEXPECT_FAIL().

[since 6.4] QTRY_COMPARE_EQ(computed, baseline)

Realiza la comparación de los valores de computed y baseline invocando a QTRY_COMPARE_EQ_WITH_TIMEOUT con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_EQ() y QTRY_COMPARE_EQ_WITH_TIMEOUT().

[since 6.4] QTRY_COMPARE_EQ_WITH_TIMEOUT(computed, baseline, timeout)

Esta macro es similar a QCOMPARE_EQ(), pero realiza la comparación de los valores computed y baseline repetidamente, hasta que la comparación devuelve true o se alcanza timeout (en milisegundos). Entre cada comparación, se procesarán eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se ejecutará más.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_EQ() y QTRY_COMPARE_EQ().

[since 6.4] QTRY_COMPARE_GE(computed, baseline)

Realiza la comparación de los valores de computed y baseline invocando a QTRY_COMPARE_GE_WITH_TIMEOUT con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_GE() y QTRY_COMPARE_GE_WITH_TIMEOUT().

[since 6.4] QTRY_COMPARE_GE_WITH_TIMEOUT(computed, baseline, timeout)

Esta macro es similar a QCOMPARE_GE(), pero realiza la comparación de los valores computed y baseline repetidamente, hasta que la comparación devuelve true o se alcanza timeout (en milisegundos). Entre cada comparación, se procesarán eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se ejecutará más.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_GE() y QTRY_COMPARE_GE().

[since 6.4] QTRY_COMPARE_GT(computed, baseline)

Realiza la comparación de los valores de computed y baseline invocando a QTRY_COMPARE_GT_WITH_TIMEOUT con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_GT() y QTRY_COMPARE_GT_WITH_TIMEOUT().

[since 6.4] QTRY_COMPARE_GT_WITH_TIMEOUT(computed, baseline, timeout)

Esta macro es similar a QCOMPARE_GT(), pero realiza la comparación de los valores computed y baseline repetidamente, hasta que la comparación devuelve true o se alcanza timeout (en milisegundos). Entre cada comparación, se procesarán eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se ejecutará más.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_GT() y QTRY_COMPARE_GT().

[since 6.4] QTRY_COMPARE_LE(computed, baseline)

Realiza la comparación de los valores de computed y baseline invocando a QTRY_COMPARE_LE_WITH_TIMEOUT con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_LE() y QTRY_COMPARE_LE_WITH_TIMEOUT().

[since 6.4] QTRY_COMPARE_LE_WITH_TIMEOUT(computed, baseline, timeout)

Esta macro es similar a QCOMPARE_LE(), pero realiza la comparación de los valores computed y baseline repetidamente, hasta que la comparación devuelve true o se alcanza timeout (en milisegundos). Entre cada comparación, se procesarán eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se ejecutará más.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_LE() y QTRY_COMPARE_LE().

[since 6.4] QTRY_COMPARE_LT(computed, baseline)

Realiza la comparación de los valores de computed y baseline invocando a QTRY_COMPARE_LT_WITH_TIMEOUT con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_LT() y QTRY_COMPARE_LT_WITH_TIMEOUT().

[since 6.4] QTRY_COMPARE_LT_WITH_TIMEOUT(computed, baseline, timeout)

Esta macro es similar a QCOMPARE_LT(), pero realiza la comparación de los valores computed y baseline repetidamente, hasta que la comparación devuelve true o se alcanza timeout (en milisegundos). Entre cada comparación, se procesarán eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se ejecutará más.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_LT() y QTRY_COMPARE_LT().

[since 6.4] QTRY_COMPARE_NE(computed, baseline)

Realiza la comparación de los valores de computed y baseline invocando a QTRY_COMPARE_NE_WITH_TIMEOUT con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_NE() y QTRY_COMPARE_NE_WITH_TIMEOUT().

[since 6.4] QTRY_COMPARE_NE_WITH_TIMEOUT(computed, baseline, timeout)

Esta macro es similar a QCOMPARE_NE(), pero realiza la comparación de los valores computed y baseline repetidamente, hasta que la comparación devuelve true o se alcanza timeout (en milisegundos). Entre cada comparación, se procesarán eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se ejecutará más.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.4.

Véase también QCOMPARE_NE() y QTRY_COMPARE_NE().

QTRY_COMPARE_WITH_TIMEOUT(actual, expected, timeout)

La macro QTRY_COMPARE_WITH_TIMEOUT() es similar a QCOMPARE(), pero realiza la comparación de los valores actual y expected repetidamente, hasta que los dos valores son iguales o se alcanza el timeout (en milisegundos). Entre cada comparación, se procesarán eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se seguirá ejecutando.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Véase también QTRY_COMPARE(), QCOMPARE(), QVERIFY(), QTRY_VERIFY(), y QEXPECT_FAIL().

QTRY_VERIFY2(condition, message)

Comprueba condition invocando QTRY_VERIFY2_WITH_TIMEOUT() con un tiempo de espera de cinco segundos. Si condition sigue siendo falso, se muestra message. message es una cadena de caracteres C sin formato.

Ejemplo:

QTRY_VERIFY2(list.size() > 2, QByteArray::number(list.size()).constData());

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Véase también QTRY_VERIFY2_WITH_TIMEOUT(), QTRY_VERIFY(), QVERIFY(), QCOMPARE(), QTRY_COMPARE() y QEXPECT_FAIL().

QTRY_VERIFY(condition)

Comprueba la condition invocando QTRY_VERIFY_WITH_TIMEOUT() con un tiempo de espera de cinco segundos.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Véase también QTRY_VERIFY_WITH_TIMEOUT(), QTRY_VERIFY2(), QVERIFY(), QCOMPARE(), QTRY_COMPARE() y QEXPECT_FAIL().

QTRY_VERIFY2_WITH_TIMEOUT(condition, message, timeout)

La macro QTRY_VERIFY2_WITH_TIMEOUT es similar a QTRY_VERIFY_WITH_TIMEOUT() excepto en que muestra un message detallado cuando condition sigue siendo falso después del timeout especificado (en milisegundos). message es una cadena de texto en C.

Desde Qt 6.8, timeout también puede ser un literalstd::chrono como 2s.

Ejemplo:

QTRY_VERIFY2_WITH_TIMEOUT(list.size() > 2, QByteArray::number(list.size()).constData(), 10s);

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Véase también QTRY_VERIFY(), QTRY_VERIFY_WITH_TIMEOUT(), QVERIFY(), QCOMPARE(), QTRY_COMPARE(), y QEXPECT_FAIL().

QTRY_VERIFY_WITH_TIMEOUT(condition, timeout)

La macro QTRY_VERIFY_WITH_TIMEOUT() es similar a QVERIFY(), pero comprueba condition repetidamente, hasta que la condición se convierte en verdadera o se alcanza timeout (en milisegundos). Entre cada evaluación, se procesarán los eventos. Si se alcanza el tiempo de espera, se registra un fallo en el registro de pruebas y la prueba no se ejecutará más.

Desde Qt 6.8, timeout también puede ser un literal destd::chrono como 2s.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Véase también QTRY_VERIFY(), QTRY_VERIFY2_WITH_TIMEOUT(), QVERIFY(), QCOMPARE(), QTRY_COMPARE(), y QEXPECT_FAIL().

QVERIFY2(condition, message)

La macro QVERIFY2() se comporta exactamente igual que QVERIFY(), salvo que informa de un message cuando condition es falso. El message es una cadena C sin formato.

El mensaje también puede obtenerse de una llamada a una función que produzca una cadena C sin formato, como qPrintable() aplicada a un QString, que puede construirse de cualquiera de sus formas habituales, incluyendo la aplicación de .args() para formatear algunos datos.

Ejemplo:

QVERIFY2(QFileInfo("file.txt").exists(), "file.txt does not exist.");

Por ejemplo, si tiene un objeto archivo y está probando su función open(), podría escribir una prueba con una sentencia como:

bool opened = file.open(QIODevice::WriteOnly);
QVERIFY(opened);

Si esta prueba falla, no dará ninguna pista de por qué falló la apertura del archivo:

FAIL! : tst_QFile::open_write() 'opened' returned FALSE. ()

Si hay un mensaje de error más informativo que pueda construir a partir de los valores que se están probando, puede utilizar QVERIFY2() para pasar ese mensaje junto con su condición de prueba, para proporcionar un mensaje más informativo en caso de fallo:

QVERIFY2(file.open(QIODevice::WriteOnly),         qPrintable(QString("open %1: %2")
                   .arg(file.fileName()).arg(file.errorString())));

Si esta rama está siendo probada en el sistema Qt CI, el mensaje de fallo detallado arriba será insertado en el resumen publicado en el sistema de revisión de código:

FAIL! : tst_QFile::open_write() 'opened' returned FALSE. (open /tmp/qt.a3B42Cd: No space left on device)

Ver también QVERIFY(), QCOMPARE(), QEXPECT_FAIL(), QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT(), y QCOMPARE_GE().

QVERIFY(condition)

La macro QVERIFY() comprueba si condition es verdadera o no. Si es verdadera, la ejecución continúa. Si no lo es, se registra un fallo en el registro de pruebas y la prueba no seguirá ejecutándose.

Puede utilizar QVERIFY2() cuando resulte práctico y valioso incluir información adicional en el informe de fallos de la prueba.

Nota: Esta macro sólo puede utilizarse en una función de prueba invocada por el marco de pruebas.

Por ejemplo, el siguiente código muestra esta macro utilizada para verificar que un objeto QSignalSpy es válido:

QVERIFY(spy.isValid());

Para obtener más información sobre el fallo, utilice QCOMPARE(x, y) en lugar de QVERIFY(x == y), ya que informa tanto del valor esperado como del real cuando falla la comparación.

Véase también QCOMPARE(), QTRY_VERIFY(), QSignalSpy, QEXPECT_FAIL(), QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT() y QCOMPARE_GE().

[since 6.3] QVERIFY_THROWS_EXCEPTION(exceptiontype, ...)

La macro QVERIFY_THROWS_EXCEPTION ejecuta la expresión dada en el argumento variadic y espera capturar una excepción lanzada por la expresión.

Hay varios resultados posibles:

  • Si la expresión lanza una excepción que es la misma que exceptiontype o derivada de exceptiontype, la ejecución continuará.
  • De lo contrario, si la expresión no lanza ninguna excepción, o la excepción lanzada deriva de std::exception, entonces se registrará un fallo en el registro de la prueba y la macro retornará antes de tiempo (desde la función adjunta).
  • Si la excepción lanzada no se deriva ni de std::exception ni de exceptiontype, se registrará un fallo en el registro de pruebas y se volverá a lanzar la excepción. Esto evita problemas con, por ejemplo, excepciones de cancelación de pthread.

La macro utiliza argumentos variádicos, por lo que la expresión puede contener comas que el preprocesador considera separadores de argumentos, p. ej. como en

QVERIFY_THROWS_EXCEPTION(std::bad_alloc,
// macro arguments:      ^ exceptiontype
                         std::vector<std::pair<int, long>>{42'000'000'000, {42, 42L}});
// macro arguments:      \---------- 1 ----------/  \-------- 2 --------/  \3/  \ 4 /
//                       \----------------------- expression -----------------------/

Nota: Esta macro sólo puede utilizarse en una función de prueba que sea invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.3.

[since 6.3] QVERIFY_THROWS_NO_EXCEPTION(...)

La macro QVERIFY_THROWS_NO_EXCEPTION ejecuta la expresión dada en su argumento variadic e intenta atrapar cualquier excepción lanzada por la expresión.

Hay varios resultados diferentes:

  • Si la expresión no lanza ninguna excepción, la ejecución continuará.
  • En caso contrario, si se captura una excepción derivada de std::exception, se registrará un fallo en el registro de pruebas y la macro retornará antes de tiempo (retorno implícito de la función adjunta).
  • Si se captura una excepción no derivada de std::exception, se registrará un fallo en el registro de pruebas y se volverá a lanzar la excepción. Esto evita problemas con, por ejemplo, excepciones de cancelación de pthread.

La macro utiliza argumentos variádicos, por lo que la expresión puede contener comas que el preprocesador considera separadores de argumentos, p. ej. como en

QVERIFY_THROWS_NO_EXCEPTION(std::pair<int, long>{42, 42L});
// macro arguments:         \---- 1 ----/  \-- 2 -/  \3 /

Nota: Esta macro sólo puede utilizarse en una función de prueba que sea invocada por el marco de pruebas.

Esta macro se introdujo en Qt 6.3.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.