Как использовать Qtest для тестирования рабочего процесса состояний машины QT

Я пытаюсь реализовать рабочий процесс на основе конечного автомата QT, и для целей тестирования я пытаюсь воспроизвести мой рабочий процесс с использованием QTest.

void initTestCase()
{

machine = loadScxmlFile("StateMachine.scxml");
machine->start();

auto wrapper = new Wrapper(machine);
wrapper->connect();

qDebug() << "machinestate" << wrapper->getmachineState();
qDebug() << "activeStateBefore" << wrapper->getmachineState();
wrapper->initialize();
qDebug() << "activeStateAfter" << wrapper->getmachineState();
}

Но, к сожалению, даже если я правильно загрузил scxml и даже если он выглядит запущенным и инициализированным, active_state всегда пуст.

Config: Using QtTest library 5.9.0, Qt 5.9.0 (x86_64-little_endian-llp64 shared (dynamic) release build; by MSVC 2015)
QDEBUG : TestXImagerMock::initTestCase() machinestate ()
QDEBUG : TestXImagerMock::initTestCase() activeStateBefore ()
QDEBUG : TestXImagerMock::initTestCase() activeStateAfter ()
PASS   : TestXImagerMock::initTestCase()

Когда я пытаюсь использовать правильное приложение QCoreApplication, все выглядит как шарм, поэтому кажется, что проблема связана с QTEST_MAIN

QCoreApplication testapplication(argc, nullptr);
testapplication.exec();

дает

QDEBUG : TestXImagerMock::initTestCase() onEntry_NotInitialized
QDEBUG : TestXImagerMock::initTestCase() onEntry_NotInitialized
QDEBUG : TestXImagerMock::initTestCase() onEntry_Initializing

но эти журналы идут после testapplication.exec() назывался.

Нужно ли что-то добавить, чтобы иметь такое же поведение в QCoreApplication, созданном QTest?

Спасибо !

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]