Как настроить Google C ++ Testing Framework (gtest) в Visual Studio 2005 - PullRequest
79 голосов
/ 10 февраля 2009

Это не задокументировано на веб-сайте, и у людей, похоже, возникают проблемы с настройкой фреймворка. Может кто-нибудь, пожалуйста, покажите пошаговое введение в пример настройки проекта.

Ответы [ 7 ]

101 голосов
/ 19 ноября 2010

(В этих инструкциях среда тестирования работает для конфигурации отладки. Применение такого же процесса к конфигурации выпуска должно быть довольно тривиальным.)

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

  1. Загрузить последнюю версию gtest framework
  2. Распаковать на C:\gtest

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

  1. Открыть C:\gtest\msvc\gtest.sln в Visual Studio
  2. Установить конфигурацию на «Отладка»
  3. Построение решения

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

  1. Создайте новое решение и выберите шаблон Visual C ++> Win32> Консольное приложение Win32
  2. Щелкните правой кнопкой мыши вновь созданный проект и выберите Свойства
  3. Изменить конфигурацию на Debug.
  4. Свойства конфигурации> C / C ++> Общие> Дополнительные каталоги включения: Добавить C:\gtest\include
  5. Свойства конфигурации> C / C ++> Генерация кода> Библиотека времени выполнения. Если ваш код связан с библиотекой времени выполнения, выберите Многопоточная библиотека отладки (/ MDd). Если нет, выберите Многопоточная отладка (/MTd).
  6. Свойства конфигурации> Linker> General> Дополнительные каталоги библиотеки: добавьте C:\gtest\msvc\gtest\Debug или C:\gtest\msvc\gtest-md\Debug, в зависимости от местоположения gtestd.lib
  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
    }
    
  3. Отладка> Начать отладку

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

43 голосов
/ 10 февраля 2009

То, что сказал Арлахарен, было в основном правильным, за исключением того, что он пропустил ту часть, которая объясняет ваши ошибки компоновщика. Прежде всего, вам нужно собрать ваше приложение без CRT в качестве библиотеки времени выполнения. Вы всегда должны делать это в любом случае, так как это действительно упрощает распространение вашего приложения. Если вы этого не сделаете, то всем вашим пользователям понадобится установленная библиотека времени выполнения Visual C ++, а те, кто этого не сделает, будут жаловаться на то, что в их системе отсутствуют таинственные библиотеки DLL ... на дополнительные несколько сотен килобайт, которые стоит связать в CRT статически, вы избавляете себя от головной боли позже в поддержке (поверьте мне в этом - я научился этому нелегко!).

В любом случае, чтобы сделать это, вы переходите к свойствам цели -> C / C ++ -> Генерация кода -> Библиотека времени выполнения, и ее нужно установить как «Многопоточный» для вашей сборки выпуска и «Многопоточный». Отладка "для вашей сборки отладки.

Поскольку библиотека gtest создается таким же образом, вам нужно убедиться, что вы ссылаетесь на правильную версию it , иначе компоновщик извлечет другую копию библиотеки времени выполнения, которая это ошибка, которую вы видели (кстати, это не должно иметь значения, если вы используете MFC или нет). Вам необходимо собрать gtest в режиме в режимах Debug и Release и сохранить обе копии. Затем вы ссылаетесь на gtest.lib / gtest_main.lib в вашей сборке выпуска и gtestd.lib / gtest_maind.lib в вашей сборке отладки.

Кроме того, вам необходимо убедиться, что ваше приложение указывает на каталог, в котором хранятся файлы заголовков gtest (в свойствах -> C / C ++ -> General -> Additional Include Directories), но если вы попали в ошибку компоновщика , Я предполагаю, что вам уже удалось исправить эту часть, иначе у вас было бы намного больше ошибок компиляции, чтобы сначала разобраться.

6 голосов
/ 25 августа 2010

Я сделал видеоурок о настройке: http://www.youtube.com/watch?v=mzSzwQOmMRs

5 голосов
/ 26 февраля 2013

Если вы не хотите писать свой собственный main () для тестов, вы можете использовать функцию main (), определенную в gtest_main.lib, но тогда вы получите ошибки компоновщика «Точка входа должна быть определена» в VS2012. В вашем тестовом проекте установите для ProjectProperties-> Linker-> System-> SubSystem значение "Console", поскольку это заставит VS2012 искать точку входа с именем "main ()" и найдет ее в gtest_main.lib (при условии, что вы связались). это правильно).

4 голосов
/ 10 февраля 2009

Собрав gtest, я сделал следующее:

  1. Добавьте \ mypath \ gtest-1.0.1 \ Debug (или Release) в Общие свойства-> Линкер-> Общие-> Дополнительные каталоги библиотеки
  2. Добавьте gtest.lib и gtest_main.lib в Общие свойства-> Линкер-> Ввод-> Дополнительные зависимости

После этого я просто пишу свои тесты, используя TEST или TEST_F, в зависимости от ситуации, и компилирую их вместе с моей основной функцией:

int main(int argc, char** argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
2 голосов
/ 14 июля 2009

В Microsoft Visual Studio неправильно настроенный тип библиотеки времени выполнения вызывает ошибки связи.

VS 2005 (и 2008) по умолчанию использует Multithreaded DLL или Multithreaded Debug DLL. Но в Google Test по умолчанию используется многопоточная или многопоточная среда отладки.

Итак, выберите подходящий тип библиотеки времени выполнения для библиотеки тестов Google. (в свойствах конфигурации -> генерация кода -> библиотека времени выполнения).

0 голосов
/ 13 декабря 2017

Много ошибок, потребовалось время, чтобы исправить.

Вот простые шаги:

# Загрузить Googletest ZIP-файл из: https://github.com/google/googletest

# Googletest Visual Studio Solution

Open    C:\googletest\googletest\msvc\2010\gtest.sln
    Change "Solution configuration"
        from "Debug" to "Release"
    Build Solution
        creates gtest.lib

# Ваш проект:

Project Properties > Configuration Properties > VC++ Directories > Include Directories
    append the following:       ;C:\googletest\googletest\include

Project Properties > Configuration Properties > Linker > General > Additional Library Directories > 
    append the following:           ;C:\googletest\googletest\msvc\2010\gtest\Win32-Release

Project Properties > Configuration Properties > C/C++ > Runtime Library
    Remove the value of the above. (or match it to Googletest project)
...