CMake "Properties: Tests"의 "PASS_REGULAR_EXPRESSION" 프로그래밍
CMake "Properties: Tests"의 "PASS_REGULAR_EXPRESSION" 프로그래밍
구문:
set_tests_properties(TEST_NAME PROPERTIES PASS_REGULAR_EXPRESSION REGEX1 REGEX2 ...)
여기서:
TEST_NAME
은 테스트 이름입니다.REGEX1
,REGEX2
등은 테스트 출력과 일치해야 하는 정규 표현식입니다.
예제:
다음 예제에서는 MyTest
라는 테스트의 출력이 "Test Passed"라는 문구와 일치하는지 확인합니다.
add_test(NAME MyTest COMMAND my_test_program)
set_tests_properties(MyTest PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed")
여러 정규 표현식 사용:
테스트 출력이 여러 정규 표현식 중 하나 이상과 일치해야 하는 경우 여러 정규 표현식을 공백으로 구분하여 지정할 수 있습니다.
set_tests_properties(MyTest PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed" "Error: [0-9]+")
주의 사항:
PASS_REGULAR_EXPRESSION
속성은 테스트 프로세스의 종료 코드를 무시합니다. 즉, 테스트 프로세스가 0이 아닌 코드로 종료되더라도 테스트 출력이 지정된 정규 표현식과 일치하면 테스트는 합격 처리됩니다.PASS_REGULAR_EXPRESSION
속성을 사용하려면 CMake 버전 3.0 이상이 필요합니다.
참고 자료:
추가 정보:
FAIL_REGULAR_EXPRESSION
속성은 테스트 출력이 지정된 정규 표현식과 일치하면 테스트를 실패 처리하는 데 사용됩니다.TIMEOUT
속성은 테스트 실행 시간 제한을 설정하는 데 사용됩니다. 테스트가 시간 제한을 초과하면 실패 처리됩니다.
CMake "Properties: Tests"의 "PASS_REGULAR_EXPRESSION" 관련 샘플 코드
예제 1: 테스트 출력이 "Test Passed"와 일치하는지 확인
cmake_minimum_required(VERSION 3.0)
add_test(NAME MyTest COMMAND my_test_program)
set_tests_properties(MyTest PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed")
예제 2: 테스트 출력이 "Test Passed" 또는 "Error: [0-9]+"와 일치하는지 확인
cmake_minimum_required(VERSION 3.0)
add_test(NAME MyTest COMMAND my_test_program)
set_tests_properties(MyTest PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed" "Error: [0-9]+")
예제 3: "PASS_REGULAR_EXPRESSION"와 "FAIL_REGULAR_EXPRESSION" 함께 사용
cmake_minimum_required(VERSION 3.0)
add_test(NAME MyTest COMMAND my_test_program)
set_tests_properties(MyTest PROPERTIES
PASS_REGULAR_EXPRESSION "Test Passed"
FAIL_REGULAR_EXPRESSION "Error: [0-9]+"
)
예제 4: "TIMEOUT" 속성과 함께 사용
cmake_minimum_required(VERSION 3.0)
add_test(NAME MyTest COMMAND my_test_program)
set_tests_properties(MyTest PROPERTIES
PASS_REGULAR_EXPRESSION "Test Passed"
FAIL_REGULAR_EXPRESSION "Error: [0-9]+"
TIMEOUT 5
)
참고:
- 이 예제들은 단순한 예시이며 실제 프로젝트에서는 상황에 맞게 수정해야 할 수 있습니다.
- 테스트 프로그램 및 정규 표현식은 테스트 대상 코드 및 테스트 목표에 따라 변경해야 합니다.
"PASS_REGULAR_EXPRESSION"의 대안
다음은 "PASS_REGULAR_EXPRESSION"의 대안으로 사용할 수 있는 몇 가지 방법입니다.
"CHECK_OUTPUT" 매크로 사용:
"CHECK_OUTPUT" 매크로는 명령줄 프로그램의 출력을 확인하는 데 사용할 수 있습니다. 이 매크로는 출력 내용을 문자열과 일치시키거나, 정규 표현식과 일치시키거나, 오류 코드를 확인하는 등 다양한 방법으로 사용할 수 있습니다.
add_test(NAME MyTest COMMAND my_test_program)
check_output(TEST_RESULT 0 "my_test_program" STDOUT)
맞춤형 테스트 도구 사용:
특정한 테스트 시나리오를 처리하기 위해 맞춤형 테스트 도구를 개발할 수 있습니다. 이 도구는 테스트 프로그램의 출력을 분석하고 테스트 합격 여부를 판단하는 데 사용할 수 있습니다.
"CTest" GUI 사용:
"CTest" GUI를 사용하면 테스트 결과를 직접 확인하고 테스트 합격 여부를 판단할 수 있습니다.
"Catch2" 또는 "Boost Test"와 같은 테스트 프레임워크 사용:
"Catch2" 또는 "Boost Test"와 같은 테스트 프레임워크는 "PASS_REGULAR_EXPRESSION"보다 더 유연하고 강력한 테스트 기능을 제공합니다. 이러한 프레임워크는 테스트 작성, 실행 및 관리를 쉽게 해줍니다.
"PASS_REGULAR_EXPRESSION" 사용 시 고려 사항:
- "PASS_REGULAR_EXPRESSION"은 단순한 문자열 일치만 지원합니다. 정규 표현식의 모든 기능을 활용하고 싶다면 "CHECK_OUTPUT" 매크로 또는 맞춤형 테스트 도구를 사용하는 것이 좋습니다.
- "PASS_REGULAR_EXPRESSION"은 테스트 프로그램의 종료 코드를 무시합니다. 테스트 프로그램의 종료 코드 또한 고려해야 하는 경우 "CHECK_OUTPUT" 매크로를 사용하는 것이 좋습니다.
"PASS_REGULAR_EXPRESSION" 대안을 선택할 때는 다음과 같은 요소들을 고려해야 합니다.
- 테스트 시나리오의 복잡성
- 필요한 테스트 기능
- 개인적 선호