2011-09-09 8 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 Exe 파이프를 도구 창에 표시되는 DUnit 플러그인에 파이프 할 수 있기를 항상 원했습니다. DUnit DLL을 사용하면 (그리고 델파이 주소 공간에로드하는 것) 위험이 따르며 테스트가 나쁠 경우 Delphi를 죽일 수 있습니다. – Nat