Как использовать gmock с приложением MFC

У меня неуправляемое приложение MFC. Я хотел бы интегрировать некоторые модульное тестирование для этого с помощью gmock. Я добавил все включения, библиотеки.

Но как начать тестирование?

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

#include "gmock/gmock.h"
int main(int argc, char** argv) {
testing::InitGoogleMock(&argc, argv);
return RUN_ALL_TESTS();
}

но поскольку у приложений mfc нет основного метода, но есть метод InitInstance.
Как начать тест?

0

Решение

Google рекомендует вам создать отдельный проект для ваших тестов — тестовое задание проект — у которого есть свой int main, Их Страница часто задаваемых вопросов ссылается на следующий ресурс для руководства:

http://hassanjamilahmad.blogspot.com/2009/07/gtest-starters-help.html

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

Вкратце, вот общая установка:

  • Создайте пустой проект C ++ и настройте его для сборки .exe
  • Определить int main в этом проекте и добавьте шаблон googletest, который вы упомянули
  • Укажите, что тестовый проект зависит от вывода вашего основного проекта (в свойствах компоновщика)
  • Добавьте событие пост-сборки в этот проект, который вызывает свой собственный вывод, тем самым автоматически запуская тесты.

Некоторые вещи, которые следует опасаться, основываясь на прошлом опыте:

  • Эта настройка требует, чтобы классы / функции в вашем проекте MFC были экспортированы для использования в тестовом проекте (в противном случае он не может получить к ним доступ)

  • Мы столкнулись с некоторыми проблемами при связывании (то есть через компоновщик) нашего проекта MFC с тестовым проектом. В итоге мы извлекли код из проекта MFC в отдельные библиотеки и использовали googletest для тестирования этих библиотек. (Их было намного проще настроить, и они помогли с организацией кода в качестве бонуса.)

При редактировании: Чтобы уточнить, эти данные соответствуют googletest, но также применимы к gmock, так как gmock использует googletest под капотом.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector