산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
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 테스트 디렉토리 설정:


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

이 예제는 SCENARIOS로 테스트하는 방법을 보여줍니다.


#include <catch2/catch.hpp>
#ifndef DATA_PATH
#define DATA_PATH "/tmp/data"
#endif
SCENARIO("testcase", "") {
  GIVEN("usercase 1") {
    WHEN("인스턴스 생성") {
      THEN("속성 테스트") {
        // 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-case 마스터하기: 문법, 활용법, 실전 예제
  5. C++ 동적 배열 할당 완벽 가이드: new, delete, 실전 코드 예제
  6. C++ 포인터 완전 정복: 개념, 예제, 실전 활용
  7. C++ char 타입 마스터: 선언, ASCII 코드, 문자열 변환 기법
  8. C++ 연산자 오버로딩 실전 가이드: 문법, 접근법, 코드 예제
  9. C++ 구조체(struct) 완벽 가이드: 선언, 인스턴스, 포인터, 함수 인자 전달
  10. C++ std::list 마스터하기: 문법, 함수, 실전 예제