2016-02-25 4 views
1

Я только начинаю с насмешки с помощью googlemock для проекта на C++. В моем случае мой класс, который будет протестирован, наблюдает за файлом, на который написано, и всякий раз, когда записывается минимальное количество новых данных, он начинает выполнять некоторую работу.Стыковка процесса записи файла в googlemock

Что мне нужно, это класс-макет для записи процесса в файл. Насколько я понимаю, мне нужно полностью реализовать эту функциональность «писать в файл» в виде (для googlemock) виртуального класса, из которого выведен макет-класс? Фальшивая обертка, наконец, используется для тестирования и оценки, верно?

Спасибо за помощь!

+0

Как происходит наблюдение? Вы опросили файл или узнали свой класс при написании данных? –

+0

Привет. Наблюдательный класс наблюдает за размером файла. Писатель - объект, о котором идет речь. – gilgamash

ответ

1

Я предполагаю, что объект вашего класса «observer» уведомляется , что минимальный объем данных был записан объектом классом «автор». В этом случае вам необходимо реализовать абстрактный класс , который представляет собой интерфейс для вашего класса «писатель» и имеет ваш настоящий класс «писателя», наследуемый от него и переопределяющий его виртуальные функции. Кроме того, ваша реализация в стиле «писатель» наследует от этого интерфейса и и создает макетные реализации с использованием MOCK_METHODn.

Затем, чтобы ваш класс «наблюдателя» получал уведомления от объекта «писатель» с использованием указателя на абстрактный класс. Таким образом, вы можете использовать зависимость инъекции для переключения реализации на этапе тестирования, создавая mock объект «writter» и передавая свой адрес объекту «observer» (вместо адреса для реального «писателя» ) и установки с использованием EXPECT_CALL на макет предмета.

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

EDIT:

Что касается реализации Вашего реального класса «writter»: Вы не должны создать его сразу можно использовать фиктивный класс сейчас, чтобы проверить поведение класса «наблюдателя» и оставить реализация для более позднего. Разумеется, вам придется реализовать его в конечном счете, поскольку он должен использоваться в производственном коде.

+0

Привет и спасибо за ответ. Класс наблюдения, как вы предполагали, уведомляется. Я хочу, чтобы mocker смоделировал процесс записи файла.То, что вы описали, в основном, я понял, что мне нужно сделать - основное внимание было уделено тому, должен ли мой производный класс писателя, который реализует виртуальный класс, реализовать запись в файл, тогда как издевательский класс предназначен только для целей тестирования/оценки. – gilgamash

+0

Извините, мне было непонятно, в чем был главный вопрос. Проверьте мой обновленный ответ. Надеюсь, поможет! –

+0

Большое спасибо за помощь! Теперь все ясно. Однако я продолжаю, мне нужно смоделировать «минимальное количество изменений файловой системы» так или иначе, чтобы получить реалистичный тест. – gilgamash

2

Mocks, в терминах google mock, являются объектами, используемыми для проверки того, что ваш тестируемый код выполняет определенные операции над ними.

То, что вы описываете, не является ложным, а служебным классом, который запускает ваш код в тестовых операциях.

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

+0

Моя проблема - это именно то, что вы описываете: Должен ли я реализовать функциональность того, что вы называете классом утилиты, и наложить на нее топтание? – gilgamash

+0

@gilgamash обе вещи независимы. Вам нужно реализовать класс util. Независимо от того, нужен ли вам макет или нет, зависит от того, что вы делаете, когда ваш класс обнаруживает, что новые данные были записаны в файл. –

+0

Угадал. Благодарю. Upvote следует! – gilgamash

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

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