Как установить гуглтест?

Я искал googletests , используя muon, но похоже, что в Ubuntu нет пакетов для него. Нужно ли устанавливать с использованием источников?

10
задан 22 January 2012 в 21:26

2 ответа

Новая информация:

стоит отметить, что libgtest0 больше не существует. Приблизительно с 2013 (я не уверен в дате изменения) посмотрите этот вопрос:

, Почему никакие файлы библиотеки не установлены для теста Google?

<час>

Старый ответ до 2012:

Это находится в репозиториях Ubuntu

sudo apt-get install libgtest0 libgtest-dev

, См. также gtest-конфигурация человека

14
ответ дан 22 January 2012 в 21:26

Минимальный запускаемый пример

Поскольку Debian/Ubuntu отказываются упаковывать сборку, как указано в: Почему не установлены файлы библиотеки для теста Google? Я просто клонирую и собрать его самостоятельно (или в реальном проекте добавить как подмодуль):

git clone https://github.com/google/googletest
cd googletest
git checkout b1fbd33c06cdb0024c67733c6fdec2009d17b384
mkdir build
cd build
cmake ..
make -j`nproc`
cd ../..

затем я использую его со своим тестовым файлом main.cpp:

g++ \
  -Wall \
  -Werror \
  -Wextra \
  -pedantic \
  -O0 \
  -I googletest/googletest/include \
  -std=c++11 \
  -o main.out \
  main.cpp \
  googletest/build/lib/libgtest.a \
  -lpthread \
;

main.cpp

#include <gtest/gtest.h>

int myfunc(int n) {
    return n + 1;
}

TEST(asdfTest, HandlesPositiveInput) {
    EXPECT_EQ(myfunc(1), 2);
    EXPECT_EQ(myfunc(2), 3);
}

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

, чтобы получить ожидаемый результат:

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from asdfTest
[ RUN      ] asdfTest.HandlesPositiveInput
[       OK ] asdfTest.HandlesPositiveInput (0 ms)
[----------] 1 test from asdfTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

В качестве альтернативы вы также можете удалить функцию main из файла main.cpp и вместо этого использовать функцию по умолчанию, предоставленную libgtest_main.a :

g++ \
  -Wall \
  -Werror \
  -Wextra \
  -pedantic \
  -O0 \
  -I googletest/googletest/include \
  -std=c++11 \
  -o main.out \
  main.cpp \
  googletest/build/lib/libgtest.a \
  googletest/build/lib/libgtest_main.a \
  -lpthread \
;

Проверено на Ubuntu 20.04.

0
ответ дан 25 November 2020 в 13:37

Другие вопросы по тегам:

Похожие вопросы: