如何使用Qtest测试QT状态机工作流程

时间:2017-07-19 13:23:29

标签: c++ qt state-machine qtestlib scxml

我正在尝试实施基于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()之后会发出日志。

我是否需要在QTest创建的QCoreApplication中添加一些具有相同行为的内容?

谢谢!

0 个答案:

没有答案