2016-03-07 2 views
4

Я запускаю проверку Google.Google test - перед классом

Мне нужно что-то вроде перед классом. У меня есть функции SetUp() и TearDown(), но они выполняются до и после каждый тест. Теперь мне нужно что-то глобальное - например, ctor, это должно запускаться только один раз, когда класс загружается.

Благодарим за продвижение.

+0

Просьба рассказать об этом «один раз, когда класс загружен». На какой класс вы ссылаетесь, и что означает классная загрузка? –

+0

Я имею в виду что-то, что запускается до начала ** всех ** тестов. не для каждого теста. – Rat

ответ

7

Вы можете определить функции статического члена void SetUpTestCase() и void TearDownTestCase() в каждом из ваших классов арматуры, то есть в каждом классе, полученном из ::testing::Test.

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

Проверьте docs.

+0

Perez - Как я могу это сделать для всех тестов (во всех тестовых случаях)? Я хочу сказать, что перед каждым тестом будет запущен один и тот же метод SetUp, а после каждого теста будет запущен один и тот же метод TearDown без добавления/редактирования любого существующего класса? –

+1

@GuyAvraham: AFAIK в этой структуре нет такой функции hook, которая позволяет вам это делать. Вам нужно будет создать его самостоятельно, возможно, определив дочерний класс для ':: testing :: Test', а затем вместо этого сделайте ваши тестовые классы. –

+0

Спасибо, я попробовал - и это работает. –

2

Наследовать от класса ::testing::Environment и переопределить методы SetUp и TearDown, эти методы будут содержать код для вашей глобальной настройки и срыв. Затем, в основной функции исполняемого файла, который запускает тесты, вызовите функцию ::testing::AddGlobalTestEnvironment() перед вызовом RUN_ALL_TESTS(). Для получения более подробной информации, обратитесь к документации:

https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#global-set-up-and-tear-down

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