Как настроить и настроить Google Test Framework в Linux

Я новичок в g test, и вот что я пытаюсь сделать (на сервере Linux с консоли):
1) Создайте небольшой проект в C ++ (с заголовочным файлом, содержащим прототип функции, cpp-файл с функцией в нем и другой cpp-файл с основным вызовом функции, уже определенной в заголовочном файле)
2) Сконфигурируйте g test, чтобы написать модульные тесты и протестируйте функцию, созданную на шаге 1
3) Создайте еще один небольшой проект с парой юнит-тестов (различные сценарии для тестирования функции, созданной в рамках проекта на шаге 1)

Кто-нибудь может подсказать, как настроить g test и проекты, созданные на примере?

заранее спасибо

6

Решение

  1. Прежде всего, получите самую последнюю версию GoogleTest из хранилища Subversion (вам нужно диверсия установлены):

    cd ~
    
    svn checkout http://googletest.googlecode.com/svn/trunk/ googletest-read-only
    
  2. Затем соберите библиотеку (вам нужно CMake установлены):

    mv googletest-read-only googletest
    
    mkdir googletest/lib
    
    cd googletest/lib
    
    cmake ..
    
    make
    
  3. С этой точки зрения:

    • скомпилированные библиотеки находятся в каталоге ~ / googletest / lib
    • включаемые файлы находятся в каталоге ~ / googletest / include

Чтобы использовать googletest:

  1. Включите заголовок в ваши файлы:

    #include "gtest/gtest.h"
  2. Экспортируйте путь к библиотеке:

    export GOOGLETESTDIR=~/googletest
    
  3. Компилировать с

    g++ ... -I$GOOGLETESTDIR/include -L$GOOGLETESTDIR/lib -lgtest -lpthread
    
5

Другие решения

Пожалуйста, найдите учебник
@ http://www.yolinux.com/TUTORIALS/Cpp-GoogleTest.html

Внимание !!

одно исправление в make-файле (test / src / Makefile). Порядок пути к библиотеке неверен !!

Это было бы как:

CXX = g ++
CXXFLAGS = -g -L / opt / gtest / lib -lgtest -lgtest_main -lpthread
INCS = -I./ -I ../../ src -I / opt / gtest / include
OBJS = ../../src/Addition.o Addition_Test.o ../../src/Multiply.o Multiply_Test.o

testAll: $ (OBJS)
$ (CXX) $ (INCS) -o testAll Main_TestAll.cpp $ (OBJS) $ (CXXFLAGS)

.cpp.o:
$ (CXX) $ (CXXFLAGS) -c $< -о $ @ $ (INCS)

чистить:
rm testAll * .o testAll.xml

0

После небольшого исследования вот что я узнал:

Если ваша библиотека проекта содержит файлы, такие как:
1) callMain.cpp, который вызывает функцию для выполнения некоторых операций
2) reverse.cpp, который содержит логику обращения числа и
3) header.h, содержащий объявление прототипов функций

И если у вас есть сценарии сценариев модульного тестирования, такие как unitTest1.cpp и unitTest2.cpp, которые нужно протестировать с помощью gtest, это можно сделать следующим образом:

g++ -I<gtest include directory location> -L<gtest directory location> <gtest_main.cc location> reverse.cpp unitTest1.cpp unitTest2.cpp -lgtest -lpthread -o test_try

Это компилирует и создает исполняемый файл, такой как test_try, который при выполнении дает желаемый результат. Пожалуйста, поправьте меня, если я где-нибудь ошибаюсь. Удачного кодирования 🙂

0

Новый ответ

Сегодня я прочитал Google Test FAQ. Не рекомендуется устанавливать предварительно скомпилированную копию Google Test (например, в /usr/local). Вы можете найти ответ в FAQ.

Итак, рекомендую этот ответ а также эта статья блога.

Старый ответ

Следующий CMake документ FindGTest.

Код ниже работает для меня.

cmake_minimum_required(VERSION 2.8)

################################
# Add gtest environment
################################
enable_testing()
find_package(GTest REQUIRED)
# add gtest include directory: way 1
include_directories(${GTest_INCLUDE_DIRS})
# add gtest include directory: way 2
#include_directories(${GTest_SOURCE_DIRS}/include ${GTest_SOURCE_DIR})

################################
# Build tests
################################
aux_source_directory(. DIR_SRCS)
add_executable(fooTest ${DIR_SRCS})

# parameter `gtest` should at the front of `pthread`
target_link_libraries(fooTest gtest pthread)

# Take all gtest cases as one Cmake test case
add_test(AllFooTest fooTest)

И тогда вы можете использовать команду:

  1. cmake ., создать Makefile
  2. makeПостроить рутину
  3. ./fooTest, запустите gtest рутину
  4. make test, запустите cmake test, это еще один способ запустить gtest
0
По вопросам рекламы [email protected]