2016-11-09 4 views
1

У меня есть несколько классов тестов, у каждого из которых есть свои SetUp() и TearDown().GTEST: Идентифицировать до и после SetUp и TearDown соответственно

Из того, что я прочитал, последовательность запуска тестовых примеров после того, как RUN_ALL_TEST() неизвестна.

Я хочу запустить сервис до того, как будет вызван первый вызов SetUp и остановка службы после вызова последнего TearDown.

Как это достичь? Пример будет оценен по достоинству.

Благодаря

ответ

0

Вы могли бы использовать std::call_once для обеспечения sonething вызывается только один раз.

1

Первое наблюдение заключается в том, что они не являются модульными испытаниями, так как им требуются «услуги». Я предлагаю рассмотреть возможность переоформления приложения, чтобы позволить запускать тесты без необходимости использования внешних сервисов. Один из подходов может заключаться в использовании абстрактных классов и макета Google.

Проблема с наличием внешней службы, которая сохраняется в нормальном состоянии TearDown, заключается в том, что вы несете свою ответственность за обеспечение того, чтобы следующий тест обнаружил чистую среду: тест может быть разбит по состоянию, установленному предыдущим тестом.

Если вы действительно хотите, чтобы идти по пути долгоживущих внешних служб, прочитать о SetUpTestCase и TearDownTestCase в gtest advanced guide, что позволит запустить службу только один раз на испытательном стенде.

Существует еще более опасный класс Environment, который позволяет выполнять глобальную настройку и разрывы (поиск в расширенном руководстве).

Но опять же, ваши тесты будут хрупкими и трудными для отладки. Я предлагаю пересмотреть подход.

 Смежные вопросы

  • Нет связанных вопросов^_^