4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

QtTestを試してみた

Posted at

概要

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

手順

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

image.png

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

image.png

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

image.png

ボタンを押すと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)

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

image.png

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

image.png

image.png

テストプロジェクトの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
からテストを実行できます

image.png

感想

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

作ったプロジェクト

okamoto950712/QtTestSample

参考

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

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?