Я загрузил тест Google, но теперь я понятия не имею, как связать его с моим проектом в eclipse. Должен ли я добавить его в качестве исходной папки? Должен ли он включать его в g++? И как я могу запустить тест тогда?
Используя googletest в eclipse: как?
Ответ 1
Используя Рижский отличный ответ, вот краткий обзор того, как я получил его на работу:
- Создал новый проект на С++ в Eclipse (я выбрал Executable > Empty Project)
- Скачан googletest 1.5.0, untarred и запущен
./scripts/fuse_gtest_files.py . <project-dir>/contrib
- В Eclipse исключен каталог
contrib
из конфигурации сборки выпуска и добавлен<project-dir>/contrib
в каталоги include (нечетно, я знаю) - Добавлен каталог
src
и добавлен класс с именемFoo
(см. ниже содержимоеFoo.h
- теперь я оставилFoo.cpp
пустым) - Добавлен каталог
test
в Eclipse, исключен из конфигурации сборки Release, добавлен<project-dir>/contrib
в каталоги include и добавлены новые исходные файлыFooTest.cpp
иAllTests.cpp
(см. ниже для содержимого) - Построен и запущен проект!
foo.h:
#ifndef FOO_H_
#define FOO_H_
class Foo {
public:
virtual ~Foo();
Foo();
bool foo(void) { return true; }
};
#endif /* FOO_H_ */
FooTest.cpp:
#include "gtest/gtest.h"
#include "Foo.h"
namespace {
class FooTest : public ::testing::Test {
protected:
Foo foo;
};
TEST_F(FooTest, Foo) {
ASSERT_TRUE(foo.foo());
}
}
AllTests.cpp:
#include "gtest/gtest.h"
#include "FooTest.cpp"
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Ниже приведены подробные инструкции:
- В Eclipse откройте меню Файл и выберите Новый > Проект С++
- Тип проекта: Исполняемый > Пустой проект
- Инструментальная цепочка: Linux GCC
- Нажмите Готово
- Откройте терминал и
cd /tmp
-
wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
-
cd gtest-1.5.0/
-
./scripts/fuse_gtest_files.py . <project-dir>/contrib
- В Eclipse щелкните правой кнопкой мыши папку проекта в панели Project Explorer, затем выберите Обновить
- В области "Проводник проекта" щелкните правой кнопкой мыши по папке
contrib
, выберите Исключить из сборки... *, отключите только поле "Отпустить" и нажмите ОК - Щелкните правой кнопкой мыши папку
contrib
и выберите Свойства > C/С++ Build > Настройки > Настройки инструмента вкладкa > Компилятор GCC С++ > Каталоги - Нажмите кнопку Добавить..., затем Рабочая область..., затем выберите
<project-name>/contrib
и нажмите ОК, чтобы добавить каталог - Еще раз нажмите ОК, чтобы принять изменения в настройках сборки
- Щелкните правой кнопкой мыши проект в панели Project Explorer и выберите Новая > Папка, введите
src
в качестве имени и нажмите ОК - Щелкните правой кнопкой мыши по папке
src
на панели Project Explorer и выберите Новый > Класс, назовите ееFoo
, затем нажмите ОК (см. выше для содержимогоFoo.h
;Foo.cpp
можно оставить как есть) - Щелкните правой кнопкой мыши проект в панели Project Explorer и выберите Новая > Папка, введите
test
в качестве имени и нажмите ОК - Для добавления
<project-name>/contrib
и<project-name>/src
выполните следующие шаги: включите каталоги в каталогtest
- Щелкните правой кнопкой мыши по папке
test
, затем выберите Новый > Исходный файл, чтобы добавитьAllTests.cpp
в папкуtest
, а затем повторите те же шаги добавитьFooTest.cpp
(см. выше для содержимого) - Щелкните правой кнопкой мыши по
FooTest.cpp
и выберите Исключить из сборки..., нажмите кнопку Выбрать все, затем ОК - Щелкните правой кнопкой мыши по проекту в панели Project Explorer и выберите Свойства > C/С++ Build > Настройки > Настройки инструмента > Компилятор GCC С++ > Библиотеки, затем нажмите кнопку Добавить..., введите pthread (требуется googletest), нажмите ОК, чтобы добавить библиотеку, затем ОК еще раз, чтобы принять изменения.
- Нажмите Ctrl-b для создания проекта
- Нажмите Ctrl-F11, чтобы запустить проект
- Победа!
Ответ 2
Шаг 1 Установите Eclipse
Если Eclipse еще не установлен на компьютере, то получите последнюю версию Eclipse IDE для разработчиков C/С++ на странице загрузки Eclipse (http://www.eclipse.org/downloads/).
Если Eclipse уже установлен, но только для Java, загрузите плагин С++, следуя этим инструкциям.
а. Откройте Eclipse и нажмите "Справка" → "Установить новое программное обеспечение"
б. В поле "Работа с:" введите http://download.eclipse.org/tools/cdt/releases/kepler. Через несколько секунд поле Name будет заполнено. Выберите следующие компоненты:
- Основные возможности CDT → Инструменты разработки C/С++.
- Основные возможности CDT → Инструменты разработки C/С++ SDK
- Дополнительные возможности CDT → Поддержка тестирования модулей C/С++.
- Дополнительные функции CDT → Источники поддержки тестирования модулей C/С++
- Дополнительные возможности CDT → Поддержка C/С++ Visual С++
с. Нажмите "Далее" , согласитесь с утверждениями, а затем "Готово".
Шаг 2 Загрузите Cygwin
Установите Cygwin, щелкнув ссылку setup-x86_64.exe на странице установки Cygwin (http://www.cygwin.com/install.html). После запуска нажмите "Далее" по умолчанию, пока не перейдете в окно "Выбрать пакеты".
Вам нужно будет искать и устанавливать два пакета: gcc и make.
Первый поисковый запрос - gcc. Найдите gcc и затем откройте папку Devel. Отметьте следующие пакеты для установки, щелкнув на слове Skip (он затем изменится на номер сборки, который может быть выше, чем изображенный здесь): gcc-core, gcc-g++ и libgcc1.
Второй поисковый запрос - make. Здесь нам понадобится пакет Devel make.
После того, как они были выбраны, нажмите "Далее" для установки.
Шаг 3 Загрузите и создайте проект Google Test
Загрузите последнюю версию GoogleTest из https://code.google.com/p/googletest/downloads/list и извлеките содержимое zip файла в общий каталог. Важно, чтобы все пользователи имели доступ к этому каталогу.
Чтобы создать проект Google Test:
- Откройте Cygwin (найдите каталог установки для Cygwin и дважды щелкните по Cygwin.bat).
- Измените текущий рабочий каталог на распакованный каталог GoogleTest:
cd c:/<<yourpath>>/gtest-1.7.0/make/
- Постройте проект:
make
- Создайте архивированную библиотеку из файла gtest-all.o:
ar -rv libgtest.a gtest-all.o
Шаг 4 Добавьте каталог bin Cygwin в переменную PATH компьютера
Следуйте инструкциям на этой странице для своей версии Windows: http://www.java.com/en/download/help/path.xml, чтобы добавить каталог Cygwins bin в переменную среды PATH компьютера. (обычно путем добавления: C:\cygwin64\bin до конца текущего значения).
Шаг 5 Создайте новый проект, в котором используется GoogleTest
Запустите Eclipse и выберите File- > New- > С++ Project. Введите значения ниже и нажмите "Готово".
В Project Explore щелкните правой кнопкой мыши имя проекта и выберите "Свойства". В разделе C/С++ Build измените тип Builder на Internal Builder.
В разделе C/С++ Build выберите "Настройки", затем щелкните папку "Включает" в Cygwin С++ Compiler. Нажмите кнопку "Добавить" в верхней части окна, а затем перейдите в папку GoogleTest include.
Наконец, в папке Linker Cygwin С++ выберите "Разное", а затем щелкните значок "Добавить" в разделе "Другие объекты". Найдите файл libgtest.a, который вы создали на шаге 3 (он должен находиться в папке make в папке с распакованным файлом gtest).
Вот оно! Теперь вы готовы попробовать.
Шаг 6 Напишите код, который использует GoogleTest
- Добавьте исходную папку, щелкнув File- > New- > Source folder. Назови это ЦСИ.
- Добавьте файл заголовка, щелкнув правой кнопкой мыши папку src и выберите New- > Header File. Вызовите этот файл Counter.h.
- Добавьте исходный файл, щелкнув правой кнопкой мыши папку src и выберите New- > Source File. Вызов этот файл Counter.cpp.
- Добавьте еще один исходный файл и назовите его Counter_Tests.cpp.
Скопируйте и вставьте код ниже в соответствующие файлы:
Counter.h
class Counter {
private:
int mCounter;
public:
Counter() : mCounter(0) {}
int Increment();
};
Counter.cpp
#include <stdio.h>
#include "Counter.h"
int Counter::Increment() {
return mCounter++;
}
Counter_Tests.cpp
#include "gtest/gtest.h"
#include "Counter.h"
TEST(Counter, Increment) {
Counter c;
EXPECT_EQ(0, c.Increment());
EXPECT_EQ(1, c.Increment());
EXPECT_EQ(2, c.Increment());
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
В меню "Проект" выберите "Создать все". Теперь, чтобы подключиться к платформе модульного тестирования GoogleTest, выберите "Запустить конфигурации" в меню "Выполнить". В этом диалоговом окне выберите блок C/С++ и нажмите кнопку "Создать".
Он должен заполнить это имя проекта автоматически в приложении C/С++, если не нажать "Поиск проекта", чтобы выбрать этот проект. Затем нажмите вкладку Тестирование C/С++. В раскрывающемся списке "Тесты Runner" выберите "Тест-драйвы Google" и нажмите "Выполнить", чтобы посмотреть волшебство!
Ниже приведен снимок результата. После написания большего количества кода/тестов вы можете нажать кнопку, выделенную красным, чтобы быстро перекомпилировать и повторно запустить все тесты.
<Т411 >
Ответ 3
Не следует добавлять его в исходную папку, вместо этого создайте отдельную папку. Это делается для того, чтобы избежать зависимости вашего производственного кода от проекта тестирования. Сделайте это так
../ #your project folder
Makefile
src/
module1 #some module
module2 #another module
build #tmp for build
dist #binaries
contrib/
gtest
...
test/ #your test project folder
Makefile
src/
module1 #correspondent to main project one
module2 #correspondent to main project one
build
dist
...
Обычно я использую google test как два файла, это очень удобно. Используйте scripts/fuse_gtest_files.py
из списка gtest, чтобы извлечь их. Имея только два файла, вы можете включить их компиляцию в свою компиляцию тестового проекта и иметь простую структуру проекта.
В тестовых проектах укажите каталоги ../contrib:../src:src
.
Таким образом, вы можете включать в себя такие заголовки
тест/SRC/module1/class1Test.h:
#include "gtest/gtest.h"
#include "module1/class1.h"
// test class1 here
// ...
тест/SRC/mainTest.cpp:
#include "gtest/gtest.h"
#include "module1/class1Test.h"
#include "module2/class2Test.h"
// include other tests you have
// ...
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Ответ 4
Вот мое решение для Eclipse 4.3 и CDT 8.2 Я чувствовал, что это было несколько легче, чем описано выше.
-
Загрузите gtest и установите его, как описано в файле readme.txt(используя cmake и make в linux)
-
Перейдите в раздел "YourProject- > Properties- > C/С++ Build- > Settings- > GCC С++ Compiler- > Includes- > Include paths" и добавьте папку include в gtest
-
Перейдите в раздел "YourProject- > Properties- > C/С++ Build- > Settings- > GCC С++ Linker- > Libraries", добавьте папку gtest в качестве пути поиска и добавьте библиотеки "gtest" и "pthread"
(4. Если у вас есть тесты в том же проекте, что и источники, исключающие тесты из сборки релиза)
-
Перейдите в "Run- > Run Configurations..." и создайте новую конфигурацию запуска модуля C/С++
-
Задайте проект для своего проекта и приложения C/С++ для вашего приложения на главной вкладке. Установите тест Runner в Google Test Runner на вкладке "Тестирование на C/С++".
(7. В eclipse gui могут появляться уведомления об ошибках, если это может привести к повторной индексации проекта)
Ответ 5
У меня есть лоток вашего решения, и он работает хорошо. Я могу сказать, что для компиляции gtest не очень ясно в README. TXT.
Я запустил make файл в каталоге /make через консоль cygwin. В моем случае компилятор мне советует, чтобы не найти в библиотеке pthread. Поэтому я изменил строку
CXXFLAGS += -g -Wall -Wextra -pthread
и изменил его на
CXXFLAGS += -g -Wall -Wextra -lpthread
Выход, который я получаю, равен gtest_main.a
. Затем я переименую этот файл в libgtest.a и скопирую его в C:\cygwin\lib directory
.
Затем я настроил проект eclipse на использование cygwin и добавил gtest и pthread, как вы говорите... и он работает!
Я надеюсь, что это может помочь кому-то