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

catch2 を使用した c++ テスト

アブストラクト

この記事では catch2 の使い方を解説します 単体テストを行います。

作り方

ソースをビルドするには、https://github.com/catchorg/Catch2/tags からリリースをダウンロードする必要があります。これで、ソースを gcc でコンパイルできます。次のコード スニペットは cmake script を示します コンパイルします。


#Please set the environment variables to your needs cmake \ -G "Unix Malkefiles" \ -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")

//set environment variable to ON if you want to enable testing
if (BUILD_TESTING)
    enable_testing()
    add_subdirectory(test)
endif()

CMakeLists.txt の設定 テスト ディレクトリの。


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)

# Link to the desired libraries
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

この例は SCENARIOS でテストする方法を示しています .


#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")
            {

                //check if true
                REQUIRE(...);

                /check if no exception
                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 の下で公開されています


産業技術

  1. テストと自動化でSaaSとクラウドセキュリティを追加
  2. C++ 演算子
  3. C++ do…while ループと例
  4. C++ Switch Case ステートメントと EXAMPLE
  5. 例による配列の C++ 動的割り当て
  6. C++ ポインタと例
  7. C++ Char データ型と例
  8. C++ 演算子のオーバーロードと例
  9. C++ 構造体と例
  10. C++ の std::list と例
  11. C++ 関数とプログラム例