Cmake-функция Catch2 'catch_discover_tests ()' не работает в отличное время - PullRequest
0 голосов
/ 27 января 2019

Я использую Catch2 для Unittest.Я хочу запустить тест после сборки.Поэтому я использую функцию cath_discover_test в Catch.но во время сборки не распечатывайте ничего о тесте.как показано ниже:

> cmake --build .
blah ~
blah ~
PostBuildEvent:
  setlocal
  "C:\Program Files\CMake\bin\cmake.exe" -D TEST_TARGET=foo -D TEST_EXECUTABLE=C:/Users/MyName/workspace/someproject/build/
  Debug/foo.exe -D TEST_EXECUTOR= -D TEST_WORKING_DIR=C:/Users/MyName/workspace/someproject/build -D TEST_SPEC= -D TEST_EXT
  RA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_LIST=foo_TESTS -D CTEST_FILE=C:/Users/MyName/workspace/a
  someproject/build/foo_tests-b858cb2.cmake -P "C:/Program Files (x86)/Catch2/lib/cmake/Catch2/CatchAddTests.cmake"
  if %errorlevel% neq 0 goto :cmEnd
  :cmEnd
  endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
  :cmErrorLevel
  exit /b %1
  :cmDone
  if %errorlevel% neq 0 goto :VCEnd
  :VCEnd
blah ~
blah ~
end

Это test.cmake исходный код файла:

find_package(Catch2 REQUIRED)
add_executable(foo ${PROJECT_SOURCE_DIR}/test/test.cpp)
target_include_directories(foo PUBLIC ${PROJECT_SOURCE_DIR}/include)
target_link_libraries(foo Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(foo)

, но я выполняю тестирование через ctest, как показано ниже, тестовая работа.

>ctest
Test project C:/Users/MyNames/workspace/someproject/build
    Start 1: some class test
1/1 Test #1: some class test .............***Failed    0.02 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.04 sec

The following tests FAILED:
          1 - some class test (Failed)
Errors while running CTest

Как запустить тест и показать результат теста после сборки?

1 Ответ

0 голосов
/ 28 января 2019

CMake не ожидает, что вы будете запускать тесты одновременно со сборкой. Вы можете представить себе ситуацию кросс-компиляции, когда целевая архитектура не совпадает с вашей машиной сборки хоста, в этой ситуации не имеет смысла запускать тесты во время сборки.

Если вы хотите запустить встроенные тесты как часть сборки CMake, посмотрите на add_custom_command, чтобы выполнить команду POST_BUILD.

...