Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@okamoto950712

QtTestを試してみた

概要

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

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?