Просмотр результатов Google Test в Visual Studio

Есть ли способ просмотреть результаты Google Test в Visual Studio? Если да, то как?
Я использую Google Test 1.5.0 и Visual Studio 2010.

До сих пор я использовал Google Test из командной строки.
Я видел такие интеграции в других IDE (eclipse...), но еще не в VS


person Jonathan    schedule 01.03.2011    source источник


Ответы (6)


Посмотрите на GoogleTestAddin. Я думаю, это то, что вам нужно.
Цитата из описания CodePlex:

GoogleTestAddin — это надстройка для Visual Studio 2008 и 2010.

Это упрощает выполнение/отладку функций googletest путем их выбора.

Вам больше не придется задавать аргументы команды вашего тестового приложения для выполнения только определенных функций или тестов.

Вывод googletest перенаправляется в окно вывода Visual Studio. В случае неудачных тестов вы можете легко перейти к коду, дважды щелкнув сообщение об ошибке.

person Ovaron95    schedule 21.11.2011

Существует довольно простой способ использовать параллельный вывод googletest для ваших модульных тестов.

В нескольких словах вы можете создать свой собственный класс Printer, который выводит результаты непосредственно в окно вывода VisualStudio. Этот способ кажется более гибким, чем другие, потому что вы можете контролировать как содержимое результата (формат, подробности и т. д.), так и место назначения. Вы можете сделать это прямо в своей функции main(). Вы можете использовать более одного принтера одновременно. И вы можете перейти к коду, дважды щелкнув сообщение об ошибке при неудачных тестах.

Вот шаги, чтобы сделать это:

  1. Создайте класс, производный от класса ::testing::EmptyTestEventListener.
  2. Переопределить необходимые функции. Используйте функцию OutputDebugString(), а не printf().
  3. Перед вызовом RUN_ALL_TESTS() создайте экземпляр класса и свяжите его со списком слушателей gtest.

Ваш класс Printer может выглядеть следующим образом:

// Provides alternative output mode which produces minimal amount of
// information about tests.
class TersePrinter : public EmptyTestEventListener {
  void outDebugStringA (const char *format, ...)
  {
        va_list args;
        va_start( args, format );
        int len = _vscprintf( format, args ) + 1;
        char *str = new char[len * sizeof(char)];
        vsprintf(str, format, args );
        OutputDebugStringA(str);
        delete [] str;
  }

  // Called after all test activities have ended.
  virtual void OnTestProgramEnd(const UnitTest& unit_test) {
    outDebugStringA("TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED");
  }

  // Called before a test starts.
  virtual void OnTestStart(const TestInfo& test_info) {
    outDebugStringA(
            "*** Test %s.%s starting.\n",
            test_info.test_case_name(),
            test_info.name());
  }

  // Called after a failed assertion or a SUCCEED() invocation.
  virtual void OnTestPartResult(const TestPartResult& test_part_result) {
    outDebugStringA(
            "%s in %s:%d\n%s\n",
            test_part_result.failed() ? "*** Failure" : "Success",
            test_part_result.file_name(),
            test_part_result.line_number(),
            test_part_result.summary());
  }

  // Called after a test ends.
  virtual void OnTestEnd(const TestInfo& test_info) {
    outDebugStringA(
            "*** Test %s.%s ending.\n",
            test_info.test_case_name(),
            test_info.name());
  }
};  // class TersePrinter

Связывание принтера со списком слушателей:

UnitTest& unit_test = *UnitTest::GetInstance();
TestEventListeners& listeners = unit_test.listeners();
listeners.Append(new TersePrinter);

Подход описан в примере № 9 из примеры Googletest.

person Rom098    schedule 19.03.2012

Вы можете использовать событие после сборки. Вот руководство:
http://leefw.wordpress.com/2010/11/17/google-test-gtest-setup-with-microsoft-visual-studio-2008-c/

Вы также можете настроить «Внешний инструмент» в меню «Инструменты» Visual Studio и использовать его для запуска целевого пути вашего проекта. (Подсказка: создайте элемент меню на панели инструментов, чтобы его было легче вызывать)

person Rami A.    schedule 03.05.2011
comment
Примечание о том, как следует идти по маршруту события после сборки: неудачный тест приведет к сбою сборки. Это вызвало у меня проблемы, когда я загрузил тесты на сервер непрерывной интеграции (Jenkins), потому что Jenkins сообщал о неудачной сборке, а не о неудачном тесте. - person Joe Schrag; 17.06.2014

Для Visual Studio 2012 также существует расширение, предоставляющее тестовый адаптер для Google Test в Visual Studio (таким образом, интегрируется с обозревателем тестов Visual Studio): Google Test Adapter

person NobodysNightmare    schedule 30.10.2012

Используйте многофункциональный Google Test Adapter, предоставленный на GitHub и через галерею VS (или через меню Расширения ВС). В настоящее время он поддерживает VS2013 и VS2015, поддержка VS2012 появится в ближайшее время.

Отказ от ответственности: я являюсь одним из авторов этого расширения.

person csoltenborn    schedule 14.03.2016

Используйте GoogleTest Runner для Visual Studio 2013. автор из Google Test Adapter в качестве лучшей альтернативы .

person Tomas Kubes    schedule 23.07.2014