2012-03-12 52 views
3

TGUITestRunner形式表示DUNIT測試結果和GUITestRunner.RunTest程序創建一次:如何從DUnit測試中獲得活動的TGUITestRunner?

procedure RunTest(test: ITest); 
begin 
    with TGUITestRunner.Create(nil) do 
    begin 
    try 
     Suite := test; 
     ShowModal; 
    finally 
     Free; 
    end; 
    end; 
end; 

我想它在運行時通過寫有色狀態消息延伸。這是可能的,因爲GUI底部的狀態消息被放入TRichEdit中。所以我需要在我的TTestCase中的某個地方獲得指向這個表單的指針。

我可以在沒有修復DUnit代碼的情況下執行此操作嗎?也許你可以推薦一些黑客?

+0

這將會嚴重抵制Xunit框架的穀物。測試用例和測試運行器是非常分離的,特別是測試用例是設計者對測試運行者一無所知。 – 2012-03-12 12:38:03

+0

@DavidHeffernan,我知道我必須創建自己的測試運行器並實現我需要的東西,但也許可以在不花費數小時來實現ITestListener的情況下進行此次小修補。 – Andrew 2012-03-12 12:46:01

+1

好吧,DUnit畢竟是開源..... – 2012-03-12 12:54:23

回答

1

A「脫鉤」的方式來做到這一點可能是使用你的狀態信息裏面的一些「嵌入代碼」:

Status('<blue>Testing'); 

從DUNIT測試框架內,你可以檢查的狀態初始字符消息是'<',並提取參數(如顏色或其他),然後修改dUnit來處理它。

這樣,您的測試仍然可以在未修改的dUnit測試運行器上運行。幾年後,您可能想要轉到最新的dUnit測試,並且我不建議進行任何API更改,或嘗試訪問測試運行器對象。您可以在測試中看到的API和事情都是嚴格控制的。這是一個適當的面向對象設計的原則,jUnit/xUnit/dUnit的創建者非常相信。

+1

是的,我以自己的形式實現了'IStatusListener',並且可以通過在SetUp上調用'SetStatusListener(MyObjectToDisplayStatus)'將它和主測試GUI一起顯示出來。不過,我想將它更深入地集成到GUI中,因爲多個表單看起來很傷心。 – Andrew 2012-03-12 13:42:27