Нам нужно написать модульные тесты для приложения wxWidgets с помощью Google Test Framework. Проблема заключается в том, что wxWidgets использует макрос IMPLEMENT_APP (MyApp) для инициализации и ввода основного цикла приложения. Этот макрос создает несколько функций, включая int main(). В тестовой среде Google также используются определения макросов для каждого теста.
Одна из проблем заключается в том, что макрос wxWidgets нельзя вызывать из тестового макроса, потому что первый создает функции. Итак, мы обнаружили, что мы можем заменить макрос следующим кодом:
wxApp* pApp = new MyApp();
wxApp::SetInstance(pApp);
wxEntry(argc, argv);
Что хорошая замена, но вызов wxEntry() входит в исходный цикл приложения. Если мы не называем wxEntry(), все еще некоторые части приложения не инициализируются.
Вопрос заключается в том, как инициализировать все, что требуется для запуска wxApp, без фактического запуска, поэтому мы можем unit test его части?