Комментарии 11
Я не понимаю, какой сейчас в этом смысл? Всё зарубежные компании, весь зарубежный софт, связанный с этим API - это же настолько всё зыбко, ненадёжно, нестабильно. Зачем завязывать себя, свой код, свои программные продукты на это? Где здравый смысл?
что это за магические штуки и как они работают?
Надеялся, что быстро и на пальцах расскажут, как это работает под капотом, но оказалось, что это ещё один небольшой справочник про синтаксис
Мне тоже интересно внутреннее устройство, но пока задача была разобраться с синтаксисом и как оно работает, т.е. применяется. Если по TEST и TEST_F можно и так догадаться, то с моками мне так и не попалось простых примеров и объяснения принципа построения теста. Про TEST могу предположить что там под капотом, мы нечто похожее делали на курсах - свою микротестовую систему на макросах. В принципе там несложный код, главное покрыть по максимуму разные типы данных (простые и контейнеры stl) и чтобы еще при ошибке выводилось их содержимое. А как макросы перевести в названия внутренних функций и их аргументов - это для меня до сих пор магия.
LE - LessThanEqual
GR - GreaterThanEual
Меньше, чем равно? Больше, чем равно? Что это?
EXPECT_STREQ(value.c_str(), "root");
Зачем так длинно и не оптимально? Почему не EXPECT_EQ(value, "root");
?
Меньше, чем равно? Больше, чем равно? Что это?
Это машинальное копирование, не подумав о тех кто будет читать. Такая запись приводится в некоторых источниках и возможно у англоязычных IT пользователей звучит естественно. Спасибо за замечание, в тексте подкорректировал расшифровку.
Зачем так длинно и не оптимально? Почему не
EXPECT_EQ(value, "root");
?
Кто ж, как говорится, знал что и так можно... Сейчас у себя проверил, действительно работает. Могу только предположить, что изначально автор видео, откуда пошел этот пример, написал так, т.к. использовал древнюю версию gtest.
Ну странно, конечно. В официальной доке пишут, что EXPECT_EQ, если использовать на указателях будет сравнивать то, что они указывают на одну и ту же область памяти, но не саму память, а вот EXPECT_STREQ будет, как раз сравнивать память.
Либо что-то поменялось в их королевстве и они не изменили документацию, либо надо им писать с примерами...
sudo make
Не стоит делать этого от имени администратора, мало ли чего в ходе сборки выполняется :)
Есть простой способ подключить googletest к любому проекту:
git submodule add https://github.com/google/googletest.git
а в CMakeLists.txt пишем:
enable_testing()
add_subdirectory(googletest)
add_executable(test_app test_main.cpp)
target_link_libraries(test_app gtest_main)
так и собираем всегда свежую версию googletest, и проблем с линковкой не возникнет из-за разных флагов сборки проекта и библиотеки.
Спасибо за совет. После проверки у себя добавил его в публикацию с небольшими дополнениями.
Простой способ подключать внешние библиотеки - через conan. Собирать каждый раз то, что не меняется, имхо, так себе удовольствие
Просто о сложном — пишем тесты с Google C++ Testing Framework (GTest, GMock)