Как настроить googletest на Linux в 2012 году? - PullRequest
20 голосов
/ 05 января 2012

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

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

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

Ответы [ 3 ]

14 голосов
/ 20 декабря 2012

Вот что я сделал, и вы можете настроить по мере необходимости. Я загрузил gtest-1.6.0.zip (со страницы Releases ) на свой компьютер с Linux в ~ / Downloads, который полностью напечатан как / home / me / 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

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

3 голосов
/ 05 января 2012

В этих инструкциях среда тестирования работает для конфигурации отладки.

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

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

2.Разархивировать до C:\gtest

Сборка библиотек фреймворков

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

2.Установите конфигурацию в «Отладка»

3.Строительное решение

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

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

2.Нажмите правой кнопкой мыши вновь созданный проект и выберите Свойства

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

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

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

6. Свойства конфигурации> Компоновщик> Общие> Дополнительные каталоги библиотеки: Добавить 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.Debug> Начать отладку

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

1 голос
/ 22 августа 2018

Добавление к ответ Джеймса С. :

Обратите внимание, что для построения библиотеки с использованием 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 документацию по теме .

...