4

DUnitを使用しています。VCLGUITestRunnerとコンソールTextTestRunnerがあります。

FiremonkeyアプリケーションとVCLフォームアプリケーションの両方で使用されるユニットで、次のことを実現したいと思います。

  1. Firemonkeyアプリの場合、ターゲットがOS Xの場合、OSXで実行->TextTestRunner
  2. Firemonkeyアプリの場合、ターゲットが32ビットWindowsの場合、Windowsで実行-> AllocConsole + TextTestRunner
  3. VCLアプリの場合->GUITestRunner

{$IFDEF MACOS}
TextTestRunner.RunRegisteredTests;      // Case 1
{$ELSE}
   {$IFDEF MSWINDOWS}
   AllocConsole;
   {$ENDIF}
   {$IFDEF FIREMONKEY_APP}              // Case 2 <--------------- HERE
   TextTestRunner.RunRegisteredTests;  
   {$ELSE}                              // Case 3
   GUITestRunner.RunRegisteredTests;
   {$IFEND}
{$ENDIF}

ケース2を機能させるための最良の方法はどれですか?

4

2 に答える 2

0

FrameworkType.dprojファイルで指定されているプロジェクトがVCLであるかFMXであるかを示す組み込みの条件はありません。私の知る限り、コードでその設定をオンにすることはできません。確かに主流ではありませんが、VCLとFMXの両方を使用するアプリケーションを使用することは完全に可能であることも忘れないでください。それは実際にはどちらかまたは条件ではありません。

したがって、GUIランナーとテキストランナーのどちらを使用するかを制御する独自の条件付き定義を宣言することをお勧めします。

実際、あなたはおそらくこれを行うための何らかのメカニズムをすでに持っているでしょう。ユニットにコードネームを付けますGUITestRunner。つまりuses、質問のコードと同じファイルに含まれている必要があります。どのように条件付きGUITestRunnerでuses句に含めましたか?

注:Embarcaderoフォーラムでも同じ質問があります:https ://newsgroups.embarcadero.com/message.jspa?messageID = 400077

于 2012-09-21T09:36:24.087 に答える
-1

使用する{$IF Defined(MSWINDOWS)}

それ以外の{$IFDEF MSWINDOWS}

{$IFDEF MSWINDOWS}FiremonkeyVCLアプリケーションで正しく機能していないためです。

于 2014-02-06T13:04:56.913 に答える