工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

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についてさらに情報を得たい場合は、以下のリンクを確認してください:

ライセンス

このライブラリはBoost Software License 1.0で公開されています。


産業技術

  1. 自動テストとパフォーマンス監視でSaaS/クラウドセキュリティを強化
  2. C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
  3. C++ do-while文:構文、実践例、ネストしたループ
  4. C++ switch文をマスター:構文、使い方、実践例
  5. C++動的配列の確保をマスター:コード例付き実践ガイド
  6. C++ポインタをマスター:概念、例、実践的応用
  7. C++ char型をマスター:宣言、ASCII、変換テクニック
  8. C++演算子オーバーロード:コード例付き実践ガイド
  9. C++構造体を実例で徹底解説
  10. C++のstd::listをマスターする:構文、関数、実践例
  11. C++関数を実例で徹底解説:基本から応用まで