Как стать автором
Обновить

Комментарии 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 будет, как раз сравнивать память.

Либо что-то поменялось в их королевстве и они не изменили документацию, либо надо им писать с примерами...

В данном случае value имеет тип std::string, а не указатель на C-строку

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. Собирать каждый раз то, что не меняется, имхо, так себе удовольствие

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории