Как настроить googletest на Linux в 2012 году?

Я использую машину Linux. Я загрузил пакет googletest из здесь

Однако, нет руководства по установке или других блогов, связанных с тем, как правильно настроить его Файл README не подходит, я не могу понять, о чем он говорит?

Может ли кто-нибудь предоставить простой пример того, как проверить простую функцию внутри .cc файла с этим пакетом gtest?

Ответы

Ответ 1

Вот что я сделал, и вы можете при необходимости настроить. Я загрузил gtest-1.6.0.zip(со страницы releases) на моем Linux-поле в ~/Downloads, который был полностью напечатан/главная/мне/Загрузки/

Разархивируйте содержимое файла gtest-1.6.0.zip в ~/Downloads/gtest-1.6.0/

cd /home/me/Downloads
unzip gtest-1.6.0.zip

Создайте библиотеку gtest, потому что вам нужно "включить" в свой тестовый исполняемый файл. Скомпилируйте файл объекта gtest-all.o:

g++ -Igtest-1.6.0/include -Igtest-1.6.0 -c gtest-1.6.0/src/gtest-all.cc

Затем создайте библиотечный архив libgtest.a:

ar -rv libgtest.a gtest-all.o

Теперь вы можете создать свой файл test.cc в ~/Downloads. Вот пример тестового файла, который я использовал, чтобы убедиться, что он компилируется.

#include "gtest/gtest.h"

TEST(blahTest, blah1) {
    EXPECT_EQ(1, 1);
}

int main (int argc, char** argv) {
    ::testing::InitGoogleTest(&argc, argv);

    int returnValue;

    //Do whatever setup here you will need for your tests here
    //
    //

    returnValue =  RUN_ALL_TESTS();

    //Do Your teardown here if required
    //
    //

    return returnValue;
}

Чтобы скомпилировать свой собственный тест и запустить его:

g++ -I/home/me/Downloads/gtest-1.6.0/include -pthread test.cc libgtest.a -o test_executable

Затем выполните его:

./test_executable

И он должен работать нормально. Измените по мере необходимости.

Ответ 2

Эти инструкции заставляют среду тестирования работать для конфигурации Debug.

Загрузите Google C++ Testing Framework

1. Загрузите последнюю платформу gtest

2. Распакуйте в C:\gtest

Сборка рамочных библиотек

1. Откройте C:\gtest\msvc\gtest.sln в Visual Studio.

2.Установите настройку на "Отладка"

Решение 3.Build

Создайте и настройте свой тестовый проект

1. Создайте новое решение и выберите шаблон Visual C++> Win32> Консольное приложение Win32.

2. Щелкните правой кнопкой мыши по вновь созданному проекту и выберите "Свойства".

3.Измените конфигурацию для отладки.

4. Конфигурационные свойства> C/C++> Общие> Дополнительные каталоги включения: Добавить C:\gtest\include

5.Настройки конфигурации> C/C++> Генерация кода> Библиотека времени выполнения: Если ваш код связан с библиотекой времени выполнения, выберите Многопоточную библиотеку отладки (/MDd). Если нет, выберите Многопоточная отладка (/MTd).

6.Настройки конфигурации> Linker> General> Дополнительные каталоги библиотеки: Добавьте C:\gtest\msvc\gtest\Debug

7. Конфигурационные свойства> Линкер> Ввод> Дополнительные зависимости: Добавьте gtestd.lib

Проверка, что все работает

1. Откройте cpp в вашем тестовом проекте, содержащем функцию main().

2. Вставьте следующий код:

#include "stdafx.h"
#include <iostream>

#include "gtest/gtest.h"

    TEST(sample_test_case, sample_test)
    {
        EXPECT_EQ(1, 1);
    }

    int main(int argc, char** argv) 
    { 
        testing::InitGoogleTest(&argc, argv); 
        RUN_ALL_TESTS(); 
        std::getchar(); // keep console window open until Return keystroke
    }

1. Отладка> Начать отладку

Если это работает, вы должны увидеть открытое окно консоли с результатами вашего теста.

Ответ 3

Приложение к ответу Джеймса С.

Обратите внимание, что для сборки библиотеки с использованием gtest-1.6.0/src/gtest-all.cc вам потребуется предоставить метод main самостоятельно. Если вы хотите вообще избежать этого и использовать стандартную реализацию основного метода, предоставляемого Googletest, создайте свою библиотеку, включая gtest_main.cc.

То есть:

g++ -Igtest-1.6.0/include -Igtest-1.6.0 -c gtest-1.6.0/src/gtest-all.cc gtest-1.6.0/src/gtest_main.cc
                                                                                       ^^^^^^^^^^^^^^
ar -rv libgtest_main.a gtest_main.o gtest-all.o
                       ^^^^^^^^^^^^

Также имейте в виду, что реализация собственного метода main не является рекомендуемым способом определения поведения SetUp и TearDown; Вы должны использовать светильники вместо этого. Проверьте Googletest документацию по теме.