QtTestを試してみた


概要

guiアプリケーションをQtTestを使ってテストすることを試しにやってみました.

手順

サブディレクトリプロジェクトを作成する

サブディレクトリプロジェクトにアプリケーションを作成する

適当にアプリケーションを作成する

ボタンを押すと2つのスピンボックスの値を足した値をlineEditにセットする

MainWindow.hpp
private slots:
    void on_pushButton_clicked();
MainWindow.cpp
void MainWindow::on_pushButton_clicked()
{
    ui->lineEdit->setText(QString::number(ui->spinBox->value() + ui->spinBox_2->value()));
}

テストプロジェクトのためにpriファイルを作成し,proファイルを修正する

priファイルはproファイルと同じディレクトリに置きます

SampleGui.pri
INCLUDEPATH += $$PWD
VPATH += $$PWD

SOURCES += \
    MainWindow.cpp

HEADERS += \
    MainWindow.hpp

FORMS += \
    MainWindow.ui
SampleGui.pro
SOURCES += \
    main.cpp

include(SampleGui.pri)

この時点でビルドして実行すると以下のような画面が出るはずです

テストプロジェクトを作成する

テストプロジェクトのproファイルにアプリケーションのpriファイルを追加する

TestGuiSample.pro
include(../SampleGui/SampleGui.pri)

テストを記述する

スピンボックスに10と20を設定し,ボタンをクリックすることでラインエディットに30が格納されていることを確認する

tst_testcase.cpp
void TestCase::test_case1()
{
    ui->findChild<QSpinBox*>("spinBox")->setValue(10);
    ui->findChild<QSpinBox*>("spinBox_2")->setValue(20);
    QTest::mouseClick(ui->findChild<QPushButton*>("pushButton"), Qt::LeftButton);
    QCOMPARE(ui->findChild<QLineEdit*>("lineEdit")->text(), "30");
}

実行する

ビルド後は
ツール -> Tests -> Run All Tests
からテストを実行できます

感想

思ったよりも簡単にテストができました.
もっと調べてみたいと思いました.

作ったプロジェクト

okamoto950712/QtTestSample

参考

QTest Namespace | Qt Test 5.15.4
Chapter 3: Simulating GUI Events | Qt Test 5.15.4