我想爲我的Cocoa應用程序的GUI部分編寫單元測試。如何在Xcode中編寫GUI的自動單元測試?
在教科書單元測試中,有一個測試框架和測試用例可以調用被測單元。該單元下的所有代碼都被嘲笑。因此,輸入和輸出都受到控制和監控;只有被測單元中的代碼被測試。
我想在被測單元做我的GUI時做同樣的事情:
1)設置某種框架,我可以編寫代碼來操縱和檢查GUI控件。
2)連接我的GUI控件來模擬我的實際代碼,而不是真實的實例。
3)運行測試,該測試操縱控件,然後檢查模擬對象以查看是否使用正確的參數調用了正確的方法,並檢查GUI以查看來自模擬對象的響應是否導致小部件的正確更改。
任何人都這樣做?如果是這樣,怎麼樣?關於如何做到這一點的任何想法?
感謝,
帕特
(編輯),舉個很具體的例子,我想:
1)編寫一個測試情況下將選擇菜單項 'MyMenu菜單' - >「MyItem 」。在這個測試案例中,我想檢查一下,方法[AppDelegate doMyItem]被調用一次,並且AppDelegate中沒有其他方法被調用。
2)生成AppDelegate的模擬對象。 (我知道如何做到這一點)
3)以某種方式(handwaving這裏)鏈接我的應用程序,以便AppDelegate的模擬實例鏈接而不是真實的。
4)運行測試。注意它失敗,因爲1)我還沒有創建MyMenu。 2)我還沒有創建MyItem。 3)我還沒有完成IB工作來將MyItem連接到[AppDelegate doMyItem],或者4),因爲我還沒有編寫'doMyItem'方法。
5)解決上述四個問題(如果我那天感覺真的很迂腐,一次一個)。
6)再次運行測試並觀察成功。
這是否使問題清楚?
Patros嗨, 關於你的第二#1,我不太明白這句話的意思是生成用戶輸入一樣「。你可以給我一個例子嗎? 謝謝, 帕特 – 2009-06-22 21:01:31
它只是意味着產生你想看到的鍵盤和鼠標事件。您可以通過包裝本機UI類並劫持它們的事件,可能通過訪問API或編寫自定義驅動程序來實現此目的。 – patros 2009-06-22 21:29:23