Подтвердить что ты не робот

Используя googletest в eclipse: как?

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

4b9b3361

Ответ 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 и нажмите "Справка" → "Установить новое программное обеспечение"

enter image description here

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

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

enter image description here

с. Нажмите "Далее" , согласитесь с утверждениями, а затем "Готово".

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

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

enter image description here

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

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

enter image description here

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

enter image description here

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

Шаг 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. Введите значения ниже и нажмите "Готово".

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

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

Шаг 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/С++ и нажмите кнопку "Создать".

enter image description here

Он должен заполнить это имя проекта автоматически в приложении C/С++, если не нажать "Поиск проекта", чтобы выбрать этот проект. Затем нажмите вкладку Тестирование C/С++. В раскрывающемся списке "Тесты Runner" выберите "Тест-драйвы Google" и нажмите "Выполнить", чтобы посмотреть волшебство!

enter image description here

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

<Т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, как вы говорите... и он работает!

Я надеюсь, что это может помочь кому-то