Как настроить Google Test в VS 2019 с нуля?

#c #unit-testing #installation #visual-studio-2019 #googletest

#c #модульное тестирование #установка #visual-studio-2019 #googletest

Вопрос:

Я уже очень давно пытаюсь настроить Google test версии v1.10 в Visual studio 2019, и это не работает, и многое изменилось. В большинстве руководств отсутствуют данные, а на странице справки Microsoft указано использовать Google test adapter, но у меня есть уже существующий проект, в который я хочу добавить Google test. Я ссылался на страницу установки Google test (https://github.com/google/googletest/blob/master/googletest/README.md ) и попытался настроить его с помощью метода cmake, но он не работает, а метод cmake немного сложен. Мне было интересно, может ли кто-нибудь помочь с шагами для такого манекена, как я? Я чувствую, что это также поможет людям, которые пытаются настроить его в настоящее время и тоже застряли.

Это то, что я сделал для cmake thingy:

  1. создал пустой проект в vs и добавил source.cpp файл и файл Header.h (для примера).

  2. Я создал CMakeLists.txt и еще CMakeLists.txt.in файл и копия вставили это для первого (немного подправили для моего проекта)

 # Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
  RESULT_VARIABLE result
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
  message(FATAL_ERROR "CMake step for googletest failed: ${result}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
  RESULT_VARIABLE result
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
  message(FATAL_ERROR "Build step for googletest failed: ${result}")
endif()

# Prevent overriding the parent project's compiler/linker
# settings on Windows
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

# Add googletest directly to our build. This defines
# the gtest and gtest_main targets.
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
                 ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
                 EXCLUDE_FROM_ALL)

# The gtest/gtest_main targets carry header search path
# dependencies automatically when using CMake 2.8.11 or
# later. Otherwise we have to add them here ourselves.
if (CMAKE_VERSION VERSION_LESS 2.8.11)
  include_directories("${gtest_SOURCE_DIR}/include")
endif()

# Now simply link against gtest or gtest_main as needed. Eg
add_executable(test_ source.cpp)
target_link_libraries(test_ gtest_main)
add_test(NAME example_test COMMAND test)
  

и CMakeLists.txt.in

 cmake_minimum_required(VERSION 2.8.2)

project(googletest-download NONE)

include(ExternalProject)
ExternalProject_Add(googletest
  GIT_REPOSITORY    https://github.com/google/googletest.git
  GIT_TAG           master
  SOURCE_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"
  BINARY_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"
  CONFIGURE_COMMAND ""
  BUILD_COMMAND     ""
  INSTALL_COMMAND   ""
  TEST_COMMAND      ""
)
  
  1. Я создал папку сборки в своем файле проекта
  2. Я использовал команду cmake из терминала, чтобы встроить ее в папку сборки следующим образом
 cmake -S "path to src code" -B "path to build"
  

и это предупреждения, которые я получил:

 No project() command is present. The top level CMakeLists.txt file must contain a literal, direct call to the project() command. And a line of code such as

project(projectName)

near the top of the CMake file, but after cmake_minimum_required().

CMake is pretending there is a "project(projectName)" command on the first line.

This warning is for project developers. Use who-dev to supress it.
  

кроме этого, он создал здание
, и в настоящее время это мое дерево проектов
введите описание изображения здесь

и это то, что есть в / build

введите описание изображения здесь

но idk, что делать после этого? Как мне начать создавать тесты? Если возможно, я хочу создать еще один проект внутри моего текущего решения, чтобы я мог запускать тесты отдельно

вот что значит

введите описание изображения здесь

проект googletest — это то место, где я хочу запускать свои тесты, если это возможно

и вот как выглядит мое дерево проектов после

введите описание изображения здесь

Комментарии:

1. Что не сработало? Какие сообщения об ошибках вы получили на каком этапе процесса?

2. @starturtle я добавил больше информации, не могли бы вы помочь, пожалуйста?

3. Чего мне не хватает, так это enable_testing() вызова, например. Кроме того, начало вашего собственного CMakeLists.txt должен содержать a cmake_minimum_required(VERSION 2.8.2) (или все, что вам нужно) и project(Project24) call (это ваше предупреждение). Ваш вызов add_executable должен быть, скорее add_executable(myTest test_source.cpp) , изменен add_test(NAME example_test COMMAND myTest) . Это то, что я вижу отсюда до сих пор. К сожалению, я знаком только с CMake или gtest, а не с обоими в одном проекте.

Ответ №1:

Перейдите по этой ссылке на T: https://www.bogotobogo.com/cplusplus/google_unit_test_gtest.php Вам не придется использовать CMake.

В VS2019, чтобы получить статические библиотеки win32 и консольные приложения, в разделе «Создать новый проект» выберите C в языковом теге, Windows в теге платформы и все типы проектов в теге types . Затем прокрутите вниз, чтобы найти Мастер рабочего стола Windows и выберите его. Остальное в соответствии с руководством.

Комментарии:

1. Поскольку у вас есть решение вашей проблемы, я предлагаю вам отметить свой собственный ответ , чтобы помочь другим членам сообщества искать и решать похожие проблемы. Спасибо 🙂

2. спасибо за предупреждение @PerryQian-MSFT . У вас это тоже сработало?