Я новичок в g test, и вот что я пытаюсь сделать (на сервере Linux с консоли):
1) Создайте небольшой проект в C ++ (с заголовочным файлом, содержащим прототип функции, cpp-файл с функцией в нем и другой cpp-файл с основным вызовом функции, уже определенной в заголовочном файле)
2) Сконфигурируйте g test, чтобы написать модульные тесты и протестируйте функцию, созданную на шаге 1
3) Создайте еще один небольшой проект с парой юнит-тестов (различные сценарии для тестирования функции, созданной в рамках проекта на шаге 1)
Кто-нибудь может подсказать, как настроить g test и проекты, созданные на примере?
заранее спасибо
Прежде всего, получите самую последнюю версию GoogleTest из хранилища Subversion (вам нужно диверсия установлены):
cd ~
svn checkout http://googletest.googlecode.com/svn/trunk/ googletest-read-only
Затем соберите библиотеку (вам нужно CMake установлены):
mv googletest-read-only googletest
mkdir googletest/lib
cd googletest/lib
cmake ..
make
С этой точки зрения:
Чтобы использовать googletest:
Включите заголовок в ваши файлы:
#include "gtest/gtest.h"
Экспортируйте путь к библиотеке:
export GOOGLETESTDIR=~/googletest
Компилировать с
g++ ... -I$GOOGLETESTDIR/include -L$GOOGLETESTDIR/lib -lgtest -lpthread
Пожалуйста, найдите учебник
@ 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
После небольшого исследования вот что я узнал:
Если ваша библиотека проекта содержит файлы, такие как:
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, который при выполнении дает желаемый результат. Пожалуйста, поправьте меня, если я где-нибудь ошибаюсь. Удачного кодирования 🙂
Сегодня я прочитал 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)
И тогда вы можете использовать команду:
cmake .
, создать Makefilemake
Построить рутину./fooTest
, запустите gtest рутинуmake test
, запустите cmake test, это еще один способ запустить gtest