Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QBS autotestrunner with qtquick test?



  • Hi All,

    Is it possible to use the qbs autotestrunner (https://doc-snapshots.qt.io/qbs/qml-qbsconvenienceitems-autotestrunner.html) with qtquick test?

    I can successfuly use it with qtest for the c++ part but cannot figure out how to use it for the qml one.

    Thanks




  • file: project.qbs

    import qbs
    
    Project {
        references: [
            "autotest-cpp/autotest-cpp.qbs",
            "autotest-qml/autotest-qml.qbs",
        ]
    
        AutotestRunner {
            Depends {
                name: 'Qt.core'
            }
            environment: [ 'PATH=' + Qt.core.binPath ]
        }
    }
    

    file: autotest-cpp/autotest-cpp.qbs

    import qbs
    
    Product {
        name: 'ut-cpp'
        type: [ 'application', 'autotest' ]
    
        Depends {
            name: 'Qt'
            submodules: [
                'testlib',
            ]
        }
    
        Group {
            fileTagsFilter: "application"
            qbs.install: true
        }
    
        Group {
            name: 'C++ source files'
            prefix: './'
            files: [
                "ut-cpp.cpp",
                "ut-cpp.h",
            ]
        }
    }
    

    file: autotest-cpp/ut-cpp.h

    #ifndef UTCPP_H
    #define UTCPP_H
    
    #include <QObject>
    #include <QtTest/QtTest>
    
    class ut_cpp : public QObject {
        Q_OBJECT
    private slots:
        void test();
    };
    
    #endif // UTCPP_H
    

    file: autotest-cpp/ut-cpp.cpp

    #include "ut-cpp.h"
    
    void ut_cpp::test() { QCOMPARE(1, 1); }
    
    int main(int argc, char *argv[]) {
      QCoreApplication a(argc, argv);
      ut_cpp test;
      return QTest::qExec(&test, argc, argv);
    }
    

    file: autotest-qml/autotest-qml.qbs

    import qbs
    
    Product {
        name: 'ut-qml'
        type: [ 'application', 'autotest' ]
    
        Depends {
            name: 'Qt'
            submodules: [
                "qmltest",
            ]
        }
    
        Group {
            fileTagsFilter: "application"
            qbs.install: true
        }
    
        Group {
            name: 'C++ source files'
            prefix: './'
            files: [
                "main.cpp",
            ]
        }
    
        Group {
            name: 'QML files'
            prefix: './'
            qbs.install: true
            qbs.installDir: "."
            files: [
                "tst_test.qml",
            ]
        }
    }
    

    file: autotest-qml/tst_tet.qml

    import QtQuick 2.9
    import QtTest 1.0
    
    TestCase {
        name: "Tests"
    
        function test_math() {
            compare(2 + 2, 4, "2 + 2 = 4")
        }
    }
    

    file: autotest-qml/main.cpp

    #include <QtQuickTest/quicktest.h>
    
    QUICK_TEST_MAIN()
    

    QtCreator build config:

    qbs.exe build -d build-project-Desktop_Qt_5_9_2_MinGW_32bits-Debug -f project.qbs --settings-dir C:\Users\xxxxx\AppData\Roaming\QtProject\qtcreator --clean-install-root --jobs 4 config:debug qbs.defaultBuildVariant:debug profile:qtc_Desktop__ea09e2b0

    qbs.exe build build -d build-project-Desktop_Qt_5_9_2_MinGW_32bits-Debug -f project.qbs --settings-dir C:\Users\xxxxx\AppData\Roaming\QtProject\qtcreator -p autotest-runner --jobs 4 config:autotest qbs.defaultBuildVariant:debug profile:qtc_Desktop__ea09e2b0


    When building, this is the following compile output:

    16:12:39: Running steps for project project...
    16:12:39: Starting: "qbs.exe" build -d build-project-Desktop_Qt_5_9_2_MinGW_32bits-Debug -f project.qbs --settings-dir C:\Users\xxxxx\AppData\Roaming\QtProject\qtcreator -p autotest-runner --jobs 4 config:autotest qbs.defaultBuildVariant:debug profile:qtc_Desktop__ea09e2b0
    Restoring build graph from disk
    Resolving project for configuration autotest
    Building for configuration autotest
    Running test ut-qml.exe
    Running test ut-cpp.exe
    build-project-Desktop_Qt_5_9_2_MinGW_32bits-Debug\autotest\install-root\ut-cpp.exe
    ********* Start testing of ut_cpp *********

    Config: Using QtTest library 5.9.2, Qt 5.9.2 (i386-little_endian-ilp32 shared (dynamic) debug build; by GCC 5.3.0)

    PASS : ut_cpp::initTestCase()

    PASS : ut_cpp::test()

    PASS : ut_cpp::cleanupTestCase()

    Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 1ms

    ********* Finished testing of ut_cpp *********

    Build done for configuration autotest.
    16:12:40: The process "qbs.exe" exited normally.
    16:12:40: Elapsed time: 00:01.


    As you can see, only the cpp unit-test is executed. How to also execute the qml one?


Log in to reply