태그 보관물: unittest

VSCode에서 GTest 테스트 항목 표시하기

VSCode의 Test Explorer에 test case들을 표시하면 귀찮은 파라미터 입력 없이도 특정 테스트케이스를 실행하거나 디버그할 수 있어서 여러모로 편리한 점이 많다. 하지만 GTest로 작성한 C++ 테스트케이스들은 자동으로 discover되지 않아서 약간의 설정을 해주어야 한다. 복잡한 것은 아니고 아래와 같이 GTest에서 제공하는 CMake 함수인 gtest_discover_tests()를 이용하면 된다.

# Allow ctest to discover unittests.
enable_testing()
include(GoogleTest)
gtest_discover_tests(
    ${TEST_EXE}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)

gtest_discover_tests() 자세한 내용은 GoogleTest CMake 문서에서 찾을 수 있으니 참고 하도록 하자. 여기에서는 target을 실행파일의 이름으로, working directory를 build로 설정해 주었다. 전체 코드는 아래와 같다.

Visual Studio Code test explorer에서 explorer로 변경되는 문제

최근 업데이트(1.65.2) 이후 부터 였던 것 같은데 VSCode의 test explorer에서 테스트를 실행하면 자꾸만 explorer로 자동 변경되는 문제가 생겼다.

이 문제는 새롭게 생긴 설정인 testing.openTesting을 neverOpen으로 변경해 주면 해결된다.

{ // settings.json
   ...
    "testing.openTesting": "neverOpen"
}

또는

Setings -> Features -> Testing -> Testing: Open Testing

왜 이런 짓을??

정보의 바다에서 이와 관련해 의견을 나눈 기록을 찾았는데 Switching to test explorer when users clicks ‘run tests’에 따르면 커스터머 인터뷰 중에 IntelliJ에 구현된 이와 관련된 유사한 기능이 요청된 모양이다. 다행히도 이 기능이 VSCode에서는 오히려 불편하기만 할꺼라는 의견을 가진 사람 덕분에 option으로 빠지게 되었는데 default 값은 이 기능이 동작하는 openOnTestStart로 되어 버렸다. 변경 사항에 관련된 ticket은 여기에서 찾을 수 있다.