Catch2でC++ユニットテストをマスター:実践ガイド
概要
この記事では、ユニットテストを行うためにcatch2を使用する方法を説明します。
ビルド方法
ソースをビルドするには、https://github.com/catchorg/Catch2/tags からリリースをダウンロードする必要があります。次に、gccでソースをコンパイルします。以下のコードスニペットは、コンパイル用のcmakeスクリプトを示しています。
# 環境変数をニーズに合わせて設定してください cmake \ -G "Unix Makefiles" \ -D CMAKE_BUILD_TYPE=Release \ -D BUILD_TESTING=OFF \ -D BUILD_SHARED_LIBS=ON \ -D "CMAKE_STAGING_PREFIX=${CMAKE_STAGING_PREFIX}" \ -D "CMAKE_INSTALL_PREFIX=${CMAKE_STAGING_PREFIX}" \ -D BUILD_TESTS=OFF \ -S "${SOURCE_DIRECTORY}" \ -B "${BUILD_DIRECTORY}" cmake --build "${BUILD_DIRECTORY}" --target install
プロジェクト構造への統合
推奨されるプロジェクト構造:
|-- project |----CMakeLists.txt |----test |------cmake |--------Catch.cmake |--------CatchAddTests.cmake |--------FindCatch2.cmake |--------ParseAndAddCatchTests.cmake |------Main.cpp |------ExampleTest1.cpp |------ExampleTest2.cpp |------CMakeLists.txt
CMakeLists.txt(プロジェクトのルート)での設定:
include(CTest) target_compile_definitions(${TARGET} PRIVATE TEST_DATA_PATH="${PROJECT_SOURCE_DIR}/data") // テストを有効にする場合は環境変数をONに設定 if (BUILD_TESTING) enable_testing() add_subdirectory(test) endif()
CMakeLists.txt(testディレクトリ)での設定:
cmake_minimum_required(VERSION 3.13) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/test/cmake") set (WILDCARD_SOURCE *.cpp) file(GLOB_RECURSE TEST_SOURCES ${WILDCARD_SOURCE}) add_executable(${TARGET_TEST} ${TEST_SOURCES}) find_package(Catch2 REQUIRED) # 目的のライブラリにリンク target_link_libraries(${TARGET_TEST} PRIVATE Catch2::Catch2 ... ) target_compile_definitions(DcmlParserTest PRIVATE TEST_DATA_PATH="${PROJECT_SOURCE_DIR}/data") include(ParseAndAddCatchTests) ParseAndAddCatchTests(${TARGET_TEST})
使用方法
Main.cpp
#define CATCH_CONFIG_MAIN #include <catch2/catch.hpp>
ExampleTest.cpp
この例は、SCENARIOを使用したテスト方法を示します。
#include <catch2/catch.hpp> #ifndef DATA_PATH #define DATA_PATH "/tmp/data" #endif SCENARIO("testcase", "") { GIVEN("usercase 1") { WHEN("instance is created") { THEN("test properties") { // trueかどうかチェック REQUIRE(...); // 例外が発生しないかチェック REQUIRE_NOTHROW(...); } } } }
ExampleTest2.cpp
この例は、TEST_CASEを使用したテスト方法を示します。
#include <catch2/catch.hpp> #ifndef DATA_PATH #define DATA_PATH "/tmp/data" #endif TEST_CASE( "TestCase1", "" ) { REQUIRE( 1 == 1 ); } TEST_CASE( "Testcase2", "" ) { REQUIRE( 3 != 1 ); }
PLCnextアプリケーションへの特別な注意
catch2をテストフレームワークとして使用するには、ARPコンテンツを除外する必要があります。ローカルのgccコンパイラでコードをコンパイルする必要があります。この設定では、非ARPコードをローカルでテストできます。
詳細情報
catch2についてさらに情報を得たい場合は、以下のリンクを確認してください:
- GitHub: https://github.com/catchorg/Catch2
ライセンス
このライブラリはBoost Software License 1.0で公開されています。
産業技術
- 自動テストとパフォーマンス監視でSaaS/クラウドセキュリティを強化
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++ do-while文:構文、実践例、ネストしたループ
- C++ switch文をマスター:構文、使い方、実践例
- C++動的配列の確保をマスター:コード例付き実践ガイド
- C++ポインタをマスター:概念、例、実践的応用
- C++ char型をマスター:宣言、ASCII、変換テクニック
- C++演算子オーバーロード:コード例付き実践ガイド
- C++構造体を実例で徹底解説
- C++のstd::listをマスターする:構文、関数、実践例
- C++関数を実例で徹底解説:基本から応用まで