Я пытаюсь реализовать рабочий процесс на основе конечного автомата 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?
Спасибо !
Задача ещё не решена.
Других решений пока нет …