내 프로젝트를 빌드하기 위해 CMake를 사용하고 있습니다. Boost 단위 테스트 프레임 워크를 사용하는 단위 테스트 바이너리를 추가했습니다. 이 바이너리 하나에는 모든 단위 테스트가 포함됩니다. CTest에서 실행할 바이너리를 추가했습니다.
ADD_EXECUTABLE( tftest test-main.cpp )
ENABLE_TESTING()
ADD_TEST( UnitTests tftest)
그러나 Visual Studio의 빌드 출력에는 CTest 실행 결과 만 표시됩니다.
Start 1: UnitTests
1/1 Test #1: UnitTests ................***Failed 0.05 sec
0% tests passed, 1 tests failed out of 1
어떤 테스트가 실패했는지 알 수 없기 때문에 이것은별로 도움이되지 않습니다. 명령 줄에서 ctest를 수동으로 실행하면 --verbose
실제로 실패한 것을 알려주는 Boost 단위 테스트에서 출력을 얻습니다.
1: Test command: tftest.exe
1: Test timeout computed to be: 9.99988e+006
1: Running 4 test cases...
1: test-main.cpp(20): error in "sanity_check3": check 1 == 2 failed
1:
1: *** 1 failure detected in test suite "Master Test Suite"
1/1 Test #1: UnitTests ................***Failed 0.00 sec
그렇다면 CTest를 --verbose
항상 실행하려면 CMakeLists.txt에서 무엇을 변경해야 합니까? CMake / CTest와 함께 Boost 단위 테스트를 사용하는 더 좋은 방법이 있습니까?
답변
CTEST_OUTPUT_ON_FAILURE
테스트가 실패 할 때마다 테스트 프로그램의 출력을 표시 하는 환경 변수를 설정할 수 있습니다 . Makefile과 명령 줄을 사용할 때이를 수행하는 한 가지 방법은 다음과 같습니다.
env CTEST_OUTPUT_ON_FAILURE=1 make check
이 스택 오버플로 질문 및 답변 은 Visual Studio에서 환경 변수를 설정하는 방법을 보여줍니다.
답변
ctest
프로젝트를 만들고 만든 후에 직접 전화 할 수 있습니다.
ctest --verbose
답변
-
Testing/Temporary
하위 폴더 를 확인할 수 있습니다 . make test 실행 후 자동으로 생성됩니다. 이 폴더에는LastTest.log
및LastTestsFailed.log
.LastTest.log
테스트 실행을 위해 원하는 출력을 포함합니다.LastTestFailed.log
실패한 테스트의 이름을 포함합니다. 따라서 실행 후 수동으로 확인할 수 있습니다make test
. -
두 번째 방법은 테스트를 실행 한 후 ctest가 로그 파일의 내용을 표시하도록하는 것입니다.
-
다음 내용과 함께 CTestCustom.ctest ( 예를 들어 configure file 명령으로 수행 할 수 있음) 파일 을 빌드 디렉토리 (실행
make test
)에 배치합니다.CTEST_CUSTOM_POST_TEST ( “cat Testing / Temporary / LastTest.log”)
-
cat 대신 유사한 작업을 수행하는 Windows cmd 명령을 사용할 수 있습니다.
make test
다시 실행 하고 이익을 얻으십시오!
ctest 사용자 정의에 대한 추가 정보는 여기에서 찾을 수 있습니다 . “cmake 사용자 정의”섹션으로 이동하십시오. 행운을 빕니다!
답변
“체크”대상을 직접 추가해야했습니다. “make tests”는 어떤 이유로 아무것도하지 않습니다. 그래서 내가 한 일은 (스택 오버플로 어딘가에서 제안한대로)-이 대상을 수동으로 추가했습니다. 자세한 출력을 얻으려면 다음과 같이 작성했습니다.
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --verbose)
답변
매우 간단한 솔루션이 있습니다 (어떤 이유로 Google 검색을 통해 찾기가 어렵습니다).
ctest --output-on-failure
Visual Studio의 폴더 열기 기능과 함께 CMake를 사용하는 경우
"ctestCommandArgs": "--output-on-failure"
빌드 구성으로 설정합니다.
답변
make check CTEST_OUTPUT_ON_FAILURE=TRUE
답변
이렇게하면 테스트 출력이 더욱 상세 해집니다.
make test ARGS="-V"