Нам нужно написать модульные тесты для 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, фактически не запуская его, чтобы мы могли выполнить его модульное тестирование?