2011-09-09 12 views
5

DUnit GUITestrunnerコードから使用できるように、ToolSAPIユニットでグローバル変数BorlandIDEServicesを初期化する方法はありますか?DUnit GUITestrunnerのコードからToolsAPIを呼び出すことはできますか?

procedure TGUITestRunner.FailureListViewClick(Sender: TObject); 
var 
    Project: IOTAProject; 
begin 
    if FailureListView.Selected <> nil then 
    begin 
    TestTree.Selected := TTreeNode(FailureListView.Selected.data); 

    // call OTA 
    Project := ToolsAPI.GetActiveProject; 
    ShowMessage(Project.ProjectType); 

    end; 
end; 

この例では、BorlandIDEServices変数が初期化されていないため、Project変数はnilになります。 GUITestrunnerはIDE内からデバッグモードで実行されます。

答えて

4

いいえ、BorlandIDEServicesはIDE自体の内部で(実際には)実行されているコードからのみ利用可能です。デバッガを使用して外部アプリケーションで実行されているコードは、外部から実行されています。デバッガがあるにもかかわらず、IDEの一部ではないため、ToolsAPI機能にアクセスすることはできません。

GExpertsのようなツールは、実際にはIDEに接続してその一部になるため、ToolsAPIインターフェイスにアクセスすることができます。これはGUITestRunnerの場合ではありません。デバッガの下で実行されているかどうかに関係なく、外部アプリケーションです。

2

私が想像することができる(テストしていない)唯一の方法は、いくつかのプロセス間通信でGUITestrunnerと通信するOTAプラグインが必要です。

たとえば、プラグインはソケットを開き、GUITestrunnerアプリケーションから 'open file' SomeTests.pas 'エディタで'コマンドを受け取ります。

+2

また、DUnitをプラグインに直接組み込むこともできます。直接IDE内からテストを(ドッキング可能な)形式で実行することもできます。 –

+1

DUnitプラグインにテスト結果をDUnit Exeパイプでパイプラインで表示させたいと思っていました。 DUnit DLLの使用(およびDelphiのアドレス空間へのロード)は危険に満ちており、テストが悪ければDelphiを殺す可能性があります。 – Nat

関連する問題