Google Test Frameworkを使用して、 wxWidgetsアプリケーションの単体テストを作成する必要があります。問題は、wxWidgetsがマクロIMPLEMENT_APP(MyApp)を使用して、アプリケーションのメインループを初期化して開始することです。このマクロは、int main()を含むいくつかの関数を作成します。googleテストフレームワークは、各テストにマクロ定義も使用します。
問題の1つは、最初のマクロが関数を作成するため、テストマクロ内からwxWidgetsマクロを呼び出すことができないことです。したがって、マクロを次のコードに置き換えることができることがわかりました。
wxApp* pApp = new MyApp();
wxApp::SetInstance(pApp);
wxEntry(argc, argv);
これは良い代替品ですが、wxEntry()呼び出しは元のアプリケーションループに入ります。wxEntry()を呼び出さない場合でも、アプリケーションの一部が初期化されていません。
問題は、wxAppを実際に実行せずに実行するために必要なすべてを初期化して、その一部を単体テストできるようにする方法です。