У меня неуправляемое приложение MFC. Я хотел бы интегрировать некоторые модульное тестирование для этого с помощью gmock. Я добавил все включения, библиотеки.
Но как начать тестирование?
Я знаю, что они используют основной метод для запуска теста в других случаях.
#include "gmock/gmock.h"
int main(int argc, char** argv) {
testing::InitGoogleMock(&argc, argv);
return RUN_ALL_TESTS();
}
но поскольку у приложений mfc нет основного метода, но есть метод InitInstance.
Как начать тест?
Google рекомендует вам создать отдельный проект для ваших тестов — тестовое задание проект — у которого есть свой int main
, Их Страница часто задаваемых вопросов ссылается на следующий ресурс для руководства:
http://hassanjamilahmad.blogspot.com/2009/07/gtest-starters-help.html
(Это имеет смысл, если вы подумаете об этом. Нет реальной причины, по которой вам следует развертывать свои модульные тесты в конечном продукте. Модульные тесты предназначены для разработчиков, а не для ваших клиентов.)
Вкратце, вот общая установка:
int main
в этом проекте и добавьте шаблон googletest, который вы упомянулиНекоторые вещи, которые следует опасаться, основываясь на прошлом опыте:
Эта настройка требует, чтобы классы / функции в вашем проекте MFC были экспортированы для использования в тестовом проекте (в противном случае он не может получить к ним доступ)
Мы столкнулись с некоторыми проблемами при связывании (то есть через компоновщик) нашего проекта MFC с тестовым проектом. В итоге мы извлекли код из проекта MFC в отдельные библиотеки и использовали googletest для тестирования этих библиотек. (Их было намного проще настроить, и они помогли с организацией кода в качестве бонуса.)
При редактировании: Чтобы уточнить, эти данные соответствуют googletest, но также применимы к gmock, так как gmock использует googletest под капотом.
Других решений пока нет …