Использование GoogleTest в Eclipse: как? - PullRequest
32 голосов
/ 17 октября 2010

Я скачал тест Google, но теперь не знаю, как связать его с моим проектом в eclipse. Должен ли я добавить его в качестве исходной папки? Стоит ли включать его как библиотеку g ++? И как мне тогда запустить тест?

Ответы [ 5 ]

39 голосов
/ 27 апреля 2011

Используя Отличный ответ Риги , вот краткое изложение того, как я заставил его работать:

  1. Создан новый проект C ++ в Eclipse (я выбрал «Исполняемый файл»> «Пустой проект»)
  2. Скачано googletest 1.5.0 , без изменений и запущено ./scripts/fuse_gtest_files.py . <project-dir>/contrib
  3. Вернувшись в Eclipse, исключил каталог contrib из конфигурации сборки выпуска и добавил <project-dir>/contrib в каталоги включения (странно, я знаю)
  4. Добавлен каталог src и добавлен класс с именем Foo (содержание Foo.h см. Ниже - пока я оставил Foo.cpp пустым)
  5. Добавлен каталог test в Eclipse, исключен из конфигурации выпуска Release, добавлен <project-dir>/contrib в каталоги включения и добавлены новые исходные файлы FooTest.cpp и AllTests.cpp (содержание см. Ниже)
  6. Построил и запустил проект!

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();
}

Вот подробные шаги:

  1. В Eclipse откройте меню Файл и выберите Новый > Проект C ++
  2. Тип проекта: Исполняемый файл > Пустой проект
  3. Набор инструментов: Linux GCC
  4. Нажмите Готово
  5. Откройте терминал и cd /tmp
  6. wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
  7. cd gtest-1.5.0/
  8. ./scripts/fuse_gtest_files.py . <project-dir>/contrib
  9. Вернувшись в Eclipse, щелкните правой кнопкой мыши папку проекта на панели Project Explorer, затем выберите Обновить
  10. В панели Project Explorer щелкните правой кнопкой мыши папку contrib, выберите Исключить из сборки ... *, снимите только флажок ** Release и нажмите OK
  11. Щелкните правой кнопкой мыши папку contrib и выберите Свойства > C / C ++ Build > Настройки > Настройки инструмента * вкладка 1097 * > Компилятор GCC C ++ > Каталоги
  12. Нажмите кнопку Добавить ... , затем кнопку Рабочая область ... , затем выберите <project-name>/contrib и нажмите ОК , чтобы добавить каталог
  13. Нажмите OK еще раз, чтобы принять изменения в настройках сборки
  14. Щелкните правой кнопкой мыши проект в области Project Explorer и выберите Создать > Папка , введите src в качестве ее имени и нажмите OK
  15. Щелкните правой кнопкой мыши папку src на панели Project Explorer и выберите New > Class , назовите его Foo, затем нажмите OK (см. выше для содержимого Foo.h; Foo.cpp можно оставить как есть)
  16. Щелкните правой кнопкой мыши проект на панели Project Explorer и выберите Создать > Папка , введите test в качестве ее имени и нажмите OK
  17. Выполните действия, описанные выше, чтобы добавить <project-name>/contrib и <project-name>/src в качестве включаемых каталогов в каталог test
  18. Щелкните правой кнопкой мыши папку test, затем выберите Новый > Исходный файл , чтобы добавить AllTests.cpp в папку test, затем повторите те же шаги, чтобы добавить FooTest.cpp (см. Выше)
  19. Щелкните правой кнопкой мыши по FooTest.cpp и выберите Исключить из сборки ... , нажмите кнопку Выбрать все , затем OK
  20. Щелкните правой кнопкой мыши проект в области Project Explorer и выберите Свойства > C / C ++ Build > Настройки > Настройки инструмента tab> GCC C ++ Linker > Библиотеки , затем нажмите кнопку Добавить ... , введите pthread (требуется googletest) нажмите OK , чтобы добавить библиотеку, затем OK еще раз, чтобы принять изменения
  21. Нажмите Ctrl-b , чтобы построить проект
  22. Нажмите Ctrl-F11 , чтобы запустить проект
  23. Победа!
26 голосов
/ 28 апреля 2014

Шаг 1 Установите Eclipse

Если Eclipse еще не установлен на компьютере, получите последнюю версию Eclipse IDE для разработчиков на C / C ++ со страницы загрузок Eclipse (http://www.eclipse.org/downloads/).

Если Eclipse уже установлен, но только для Java, загрузите плагин C ++, следуя этим инструкциям.

a. Откройте Eclipse и нажмите Справка-> Установить новое программное обеспечение

enter image description here

б. В поле Работа с: введите http://download.eclipse.org/tools/cdt/releases/kepler. Через несколько секунд появится поле Имя. Выберите следующие компоненты:

  • Основные функции CDT -> Средства разработки на C / C ++ * Основные функции CDT
  • -> Инструменты разработки на C / C ++ SDK
  • Дополнительные функции CDT -> Модульное тестирование C / C ++Поддержка
  • Дополнительные функции CDT -> Источник поддержки модульного тестирования C / C ++
  • Дополнительные функции CDT -> Поддержка Visual C ++ C / C ++

enter image description here

c. Нажмите Next, согласитесь с утверждениями, а затем Finish.

Шаг 2 Загрузите Cygwin

Установите Cygwin, щелкнув ссылку setup-x86_64.exe на странице установки Cygwin (http://www.cygwin.com/install.html). После запуска нажимайте Далее по умолчанию, пока не получитев окно Выбор пакетов.

enter image description here

Вам потребуется найти и установить два пакета: gcc и make.

Первым поисковым термином является gcc.Найдите gcc и откройте папку Devel.Отметьте следующие пакеты для установки, щелкнув слово «Пропустить» (оно изменится на номер сборки, который может быть больше, чем изображенный здесь): gcc-core, gcc-g ++ и libgcc1.

enter image description here

Вторым поисковым термином является make.Здесь нам понадобится только пакет Devel.

enter image description here

После того, как они будут выбраны, нажмите Next для установки.

Шаг 3 Загрузка ипостроить проект Google Test

Загрузите последнюю версию GoogleTest из https://code.google.com/p/googletest/downloads/list, и извлеките содержимое файла zip в общий каталог.Важно, чтобы все пользователи могли получить доступ к этому каталогу.

Для создания проекта Google Test:

  1. Откройте Cygwin (найдите каталог для установки Cygwin и дважды щелкните Cygwin.bat).
  2. Измените текущий рабочий каталог на распакованный каталог GoogleTest make: cd c:/<<yourpath>>/gtest-1.7.0/make/
  3. Создайте проект: make
  4. Создайте архивную библиотеку изфайл 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-> C ++ Project.Введите значения ниже и нажмите кнопку «Готово».

enter image description here

В Исследовании проекта щелкните правой кнопкой мыши имя проекта и выберите Свойства.В C / C ++ Build измените тип Builder на Internal Builder.

enter image description here

В C / C ++ Build выберите «Настройки», затем нажмите на папку «Включает» в Cygwin C ++ Compiler.Нажмите кнопку «Добавить» в верхнем окне, а затем перейдите к папке «GoogleTest».

enter image description here

Наконец, в папке «Связыватель Cygwin C ++» выберите «Разное» и нажмите значок «Добавить»под другие объекты.Найдите файл libgtest.a, который вы создали на шаге 3 (он должен находиться в каталоге make в разархивированной папке gtest).

enter image description here

Вот и все!Теперь вы готовы попробовать.

Шаг 6 Напишите код, который использует GoogleTest

  • Добавьте исходную папку, нажав Файл-> Создать-> Исходный кодпапка.Назовите это src.
  • Добавьте файл заголовка, щелкнув правой кнопкой мыши по папке 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();
}

В меню Проект выберите Build All. Теперь, чтобы подключить среду модульного тестирования GoogleTest, выберите «Запустить конфигурации» в меню «Выполнить». В этом диалоговом окне выберите модуль C / C ++ и нажмите кнопку «Создать».

enter image description here

Он должен заполнить это имя проекта автоматически в C / C ++ Application, если не нажать Search Project, чтобы выбрать этот проект. Далее, нажмите на вкладку Тестирование C / C ++. В раскрывающемся списке «Бегущий по тестам» выберите «Бегущий по тестам Google», а затем нажмите «Запустить», чтобы увидеть магию!

enter image description here

Ниже приведен снимок результата. После написания большего количества кода / тестов вы можете нажать на кнопку, выделенную красным, чтобы быстро перекомпилировать и повторно запустить все тесты.

enter image description here

10 голосов
/ 27 апреля 2011

Не следует добавлять его в исходную папку, вместо этого создайте отдельную папку. Это сделано для того, чтобы избежать зависимости вашего производственного кода от проекта тестирования. Сделай это так

../ #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's one
    module2 #correspondent to main project's 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();
}
6 голосов
/ 12 февраля 2014

Вот мое решение для Eclipse 4.3 и CDT 8.2 Я чувствовал, что это было несколько проще, чем описано выше.

  1. Загрузите gtest и установите его, как описано в файле readme.txt (используя cmake и make в linux)

  2. Перейдите в «YourProject-> Свойства-> Сборка C / C ++-> Настройки-> Компилятор GCC C ++-> Включает-> Включить пути» и добавьте папку включения в gtest

  3. Перейдите в "YourProject-> Свойства-> Сборка C / C ++-> Настройки-> GCC C ++ Linker-> Библиотеки", добавьте папку gtest в качестве пути поиска и добавьте библиотеки "gtest" и "pthread"

(4. Если у вас есть тесты в одном проекте с источниками, исключите тесты из сборки выпуска)

  1. Перейдите в «Run-> Run Configurations ...» и создайте новую конфигурацию запуска модуля C / C ++

  2. Установите проект для вашего проекта и приложение C / C ++ для вашего приложения на главной вкладке. На вкладке «Тестирование C / C ++» установите «Runner» в «Google Test Runner».

(7. Уведомления об ошибках могут появляться в графическом интерфейсе Eclipse, в этом случае может помочь повторная индексация проекта)

0 голосов
/ 10 сентября 2015

У меня есть ваше решение, и оно работает хорошо.Могу сказать, что для компиляции 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, как вы говорите ... и это работает!

Надеюсь, это кому-нибудь поможет

...