산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
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}) 

사용 방법

메인.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에 대한 자세한 정보를 얻으려면 다음 링크를 확인할 수 있습니다.

라이센스

라이브러리는 Boost Software License 1.0에 따라 게시됩니다.


산업기술

  1. 테스트 및 자동화로 SaaS 및 클라우드 보안 추가
  2. C++ 연산자
  3. C++ do… while 루프 예제
  4. EXAMPLE이 있는 C++ Switch Case 문
  5. 예제를 사용한 C++ 배열 동적 할당
  6. 예제가 있는 C++ 포인터
  7. C++ Char 데이터 유형(예제 포함)
  8. 예제를 사용한 C++ 연산자 오버로딩
  9. 예제가 있는 C++ 구조체
  10. 예제가 있는 C++의 std::list