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

QML TestCase not working. Why?



  • Hello!
    I am trying to use QML TestCase in the way of:

    import QtQuick 2.15
    import QtQuick.Window 2.15
    import QtTest 1.15
    
    Window {
    
    	id: oMainWindow;
    	visible: true;
    	width: 640;
    	height: 480;
    	title: qsTr("Hello World");
    
    	TestCase {
    
    		name: "QMLTestExample";
    
    		function test_Example_01() {
    
    			 compare(2 + 2, 4, "2 + 2 = 4");
    		}
    
    		function test_Example_02() {
    
    			compare(2 + 2, 5, "2 + 2 = 5");
    		}
    	}
    }
    

    It's just default application where added TestCase QML component. It's not working. There are error:

    QQmlApplicationEngine failed to load component
    qrc:/main.qml:32:2: Type TestCase unavailable
    file:///Users/alexandr/Tools/qt/5.15.0/clang_64/qml/QtTest/TestCase.qml:44:1: module "Qt.test.qtestroot" is not installed
    

    Why is that? What am I missing?



  • Solution found. Issue closed.
    Forgotten about:

    • in *.pro file
    CONFIG += qmltestcase
    
    • in main.cpp
    #include <QtQuickTest>
    QUICK_TEST_MAIN(example)
    
    • rename main.qml file onto tst_gui.qml (any other tests should be OK with name like this "tst_*.qml") and use this
    // System includes
    import QtQuick 2.15
    import QtTest 1.15
    
    // Application includes
    
    
    // Application window component
    TestCase {
    
    	name: "MathTests";
    
    	function test_math() {
    		compare(2 + 2, 4, "2 + 2 = 4");
    	}
    
    	function test_fail() {
    		compare(2 + 2, 5, "2 + 2 = 5");
    	}
    }
    

    All based on https://doc.qt.io/qt-5/qtquicktest-index.html#running-tests
    Example is here https://github.com/ArboreusSystems/arboreus_examples/tree/master/qt/QTest/UnitTest_v4

    Happy testing to all.


Log in to reply