我们需要使用Google Test Framework为wxWidgets应用程序编写单元测试。问题是wxWidgets使用宏IMPLEMENT_APP(MyApp)来初始化并进入应用程序主循环。这个宏创建了几个函数,包括int main()。google 测试框架还为每个测试使用宏定义。
其中一个问题是无法从测试宏中调用 wxWidgets 宏,因为第一个宏会创建函数。因此,我们发现可以将宏替换为以下代码:
wxApp* pApp = new MyApp();
wxApp::SetInstance(pApp);
wxEntry(argc, argv);
这是一个很好的替代品,但是 wxEntry() 调用会进入原始应用程序循环。如果我们不调用 wxEntry() ,应用程序的某些部分仍然没有初始化。
问题是如何初始化 wxApp 运行所需的一切,而不实际运行它,以便我们能够对它的部分进行单元测试?