:1つのファイルで複数のOSユニットテスト - 可能ですか?私はこのような何か実行する必要があり
void Test::testUnitTest() {
#define OS_MACOSX 1
performUnitTest();
#undef OS_MACOSX
performUnitTest();
}
void Test::performUnitTest() {
CefKeyEvent event;
event.modifiers = CTRL;
event.windows_key_code = KeyboardHander::KeyCodeC;
#ifdef OS_MACOSX
fructose_assert(1==2);
event.modifiers = COMMAND;
#endif
fructose_assert(handler.get()->IsCopyRequest(event));
}
を...
bool RealClass::IsCopyRequest(const CefKeyEvent& event) {
#ifdef OS_MACOSX
return IsCOMMANDDown(event.modifiers) && event.character == 'c';
#else
return isCTRLDown(event.modifiers) && event.character == 'c';
#endif
}
testUnitTest()
が呼び出されると、performUnitTest()
でfructose_assert(1 == 2)が呼び出されることはありません。実際のテストでは、常にisCTRLDown()メソッドが呼び出されます。プリプロセッサディレクティブには意味があります。問題は、これを実際に動作させるにはどうすればいいですか?
実際のコードでは、performUnitTest()は、ロジックに '#ifdef OS_MACOSX'を使用するクラスのメソッドを呼び出します_あなたの_real_にもっと近いサンプルを提供してください。 –
スクリプトをビルドする場合は、コンパイルするプラットフォームに応じてマクロを定義します。したがって、 'OS_MACOSX'はbuildscriptによって定義されるべきです。そしてあなたのコード(単体テストを含む)でこのマクロが設定されているかどうかをテストします。 '#ifdef OS_MACOSX' –