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

Настроить gtest, чтобы показать неудачный тест только в консоли

Есть ли возможность показывать только неудавшиеся тесты? Мне пришлось переключиться на использование гитары для этого, но я пропустил инструмент командной строки.

4b9b3361

Ответ 1

Я столкнулся с той же проблемой, что и многие другие люди. Поэтому я создал это:

https://gist.github.com/elliotchance/8215283

Должно быть много пасты и игры.

Ответ 2

Есть два способа добиться этого.

Во-первых, напишите свой собственный слушатель событий:

https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#defining-event-listeners

Другой способ - отфильтровать входные данные, которые получает прослушиватель событий googletest.

Для этого подхода вы удаляете текущий прослушиватель событий и заменяете его своим собственным

testing::TestEventListeners& listeners = testing::UnitTest::GetInstance()->listeners();
testing::TestEventListener* listener = listeners.Release(listeners.default_result_printer());
listeners.Append(new FailurePrinter(listener));

где FailurePrinter - ваш собственный класс прослушивателя событий.

Этот класс должен выглядеть так

class FailurePrinter : public ::testing::TestEventListener {

public:
FailurePrinter(TestEventListener* listener) : TestEventListener() {_listener = listener;}

virtual void OnTestProgramStart(const UnitTest& unit_test);
virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test);
virtual void OnTestCaseStart(const TestCase& test_case);
virtual void OnTestStart(const TestInfo& test_info);
virtual void OnTestPartResult(const TestPartResult& result);
virtual void OnTestEnd(const TestInfo& test_info);
virtual void OnTestCaseEnd(const TestCase& test_case);
virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test);
virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
virtual void OnTestProgramEnd(const UnitTest& unit_test);

protected:
testing::TestEventListener* _listener;
};

Теперь вы должны реализовать все методы.

Если вам нравится, как слушатель событий googles печатает что-то, просто делегируйте вызов _listener.

Или вы можете изменить результат. Например:

void FailurePrinter::OnTestPartResult(const TestPartResult& test_part_result)
{
  if (test_part_result.failed())
  {
      _listener->OnTestPartResult(test_part_result);
      printf("\n");
  }
}

будет печатать только тестовые ошибки.

Ответ 3

Я написал Google Test Pretty Printer, тестовый прослушиватель/красивый принтер для Google Test, чтобы обеспечить более чистый и привлекательный вывод консоли для Google Тестовые программы. Он включает опцию --failures-only, которая должна делать то, что вы хотите.

Ответ 5

Если вам нужно быстрое и грязное решение Python 2/3 только для неудачных тестов без внешних зависимостей: https://gist.github.com/DTasev/a894e4727eeaa94541d90ea1a3cc71a7. Он покажет неудачный тест + его вывод. Инструкция по использованию в docstring вверху файла

Для него требуется вывод по умолчанию gtest, поэтому, если вы изменили его, он не будет работать.