このページの内容

第1章:ユニットテストの作成

この第1章では、簡単なユニットテストの作成方法と、そのテストケースをスタンドアロンの実行ファイルとして実行する方法について解説します。

テストの作成

QString クラスの動作をテストしたいと仮定しましょう。まず、テスト関数を含むクラスが必要です。このクラスはQObject を継承する必要があります:

#include <QTest>

class TestQString: public QObject
{
    Q_OBJECT
private slots:
    void toUpper();
};

注: テストフレームワークがテスト関数を検出して実行できるように、QTest ヘッダーをインクルードし、テスト関数をプライベートスロットとして宣言する必要があります 。

次に、テスト関数自体を実装する必要があります。実装例は次のようになります:

void TestQString::toUpper()
{
    QString str = "Hello";
    QVERIFY(str.toUpper() == "HELLO");
}

QVERIFY() マクロは、引数として渡された式を評価します。式の評価結果が true の場合、テスト関数の実行は続行されます。そうでない場合、失敗内容を説明するメッセージがテストログに追加され、テスト関数の実行は停止します。

ただし、テストログへの出力をより詳細にしたい場合は、代わりにQCOMPARE() マクロを使用する必要があります:

void TestQString::toUpper()
{
    QString str = "Hello";
    QCOMPARE(str.toUpper(), QString("HELLO"));
}

文字列が等しくない場合、両方の文字列の内容がテストログに追加されるため、比較が失敗した理由がすぐにわかります。

スタンドアロン実行ファイルの準備

最後に、このテストケースをスタンドアロンの実行可能ファイルにするには、次の 2 行が必要です:

QTEST_MAIN(TestQString)
#include "testqstring.moc"

QTEST_MAIN() マクロは、すべてのテスト関数を実行する単純な `main() ` メソッドに展開されます。なお、テストクラスの宣言と実装の両方が `.cpp ` ファイル内にある場合、Qt のイントロスペクションが機能するように、生成された `moc` ファイルもインクルードする必要があります。

実行ファイルのビルド

CMake または qmake を使用して、テストケースの実行ファイルをビルドできます。

CMake を使用したビルド

CMakeLists.txt ファイルでビルド設定を構成します。

# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

cmake_minimum_required(VERSION 3.16)
project(tutorial1 LANGUAGES CXX)

find_package(Qt6 REQUIRED COMPONENTS Core Gui Test Widgets)

qt_standard_project_setup()

qt_add_executable(tutorial1
    testqstring.cpp
)

set_target_properties(tutorial1 PROPERTIES
    WIN32_EXECUTABLE TRUE
    MACOSX_BUNDLE TRUE
)

target_link_libraries(tutorial1 PRIVATE
    Qt6::Core
    Qt6::Gui
    Qt6::Test
    Qt6::Widgets
)

install(TARGETS tutorial1
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

qt_generate_deploy_app_script(
    TARGET tutorial1
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

次に、コマンドラインから `cmake ` を実行するか、Qt-prefix/<version>/<platform>/bin/qt-cmake にある `qt-cmake ` という便利スクリプトを使用します:

<Qt-prefix>/<version>/<platform>/bin/qt-cmake <source-dir> <build-dir> -G Ninja

その後、お好みのジェネレータツールを実行して実行ファイルをビルドします。ここではNinjaを使用しています:

ninja

qmake を使用したビルド

.pro ファイルでビルド設定を構成してください:

QT += widgets testlib

SOURCES = testqstring.cpp

# install
target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial1
INSTALLS += target

次に、qmake を実行し、最後にmake を実行して実行ファイルをビルドします:

qmake
make

注: Windows を使用している場合は 、make をnmake または使用しているビルドツール名に置き換えてください。

実行ファイルの実行

生成された実行ファイルを実行すると、次のような出力が表示されるはずです:

********* Start testing of TestQString *********
Config: Using QtTest library %VERSION%, Qt %VERSION%
PASS   : TestQString::initTestCase()
PASS   : TestQString::toUpper()
PASS   : TestQString::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
********* Finished testing of TestQString *********

おめでとうございます! これで、Qt Test フレームワークを使用して、初めてのユニットテストを作成し、実行することができました。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.