Автоматическая генерация ложных классов для gmock - PullRequest
13 голосов
/ 13 февраля 2012

Я использую gmock для модульного тестирования кода C ++ . Я не использую gtest framework . Я использую встроенную среду тестирования Visual Studio 2008.

Теперь моя проблема в том, что я должен вручную написать фиктивные классы для реального класса в модульном тесте. Например, если у меня есть класс A с 5 функциями, я должен написать MockAClass с 5 функциями. Есть ли способ, что эти классы генерируются автоматически.

* * 1010

Ответы [ 2 ]

19 голосов
/ 13 февраля 2012

Существует инструмент, связанный с проектом Google Mock, который поможет вам сделать это. Однако я думаю, что инструмент требует установки Python, и я не знаю, насколько хорошо он работает в среде Windows. Я также обнаружил, что сгенерированные файлы иногда нуждаются в небольшой настройке для идеальной работы.

Вот информация из документов :

Подсказка: если даже это слишком много для вас, вы найдете Инструмент gmock_gen.py в каталоге скриптов / генератора / Google Mock (любезно предоставлено проектом cppclean ). Этот инструмент командной строки требует, чтобы у вас был установлен Python 2.4. Вы даете ему файл C ++ и имя абстрактного класса, определенного в нем, и он напечатает определение макета класса для вас. Из-за сложности C ++ язык, этот скрипт не всегда может работать, но он может быть очень удобным когда это произойдет. Для более подробной информации читайте пользовательскую документацию.

Вот новая локализация этого скрипта .

3 голосов
/ 13 февраля 2012

Отказ от ответственности: I используется для работы в Typemock

Рассматривали ли вы использование другого инструмента?
В Typemock есть инструмент под названием Isolator ++ которые не нуждаются в том, чтобы вы писали «классы насмешек».

TEST_F(IsolatorTests, SomeTest) 
{
      AClass* fakeclass = FAKE(AClass);
      WHEN_CALLED(fakeclass->AFunction()).Return(10);

      ASSERT_EQ(10, fakeclass.AFunction()); 
}

Подробнее об этом можно узнать на этой странице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...