2013-07-29 31 views
2

我想在單元測試用例計算器的Xcode,目前我正在寫測試用例的附加功能。
這是我的數字按下的功能:調用按鈕動作在Xcode

- (IBAction)digitPressed:(UIButton *)sender. 

我已經看到了一個例子,如果方法名稱爲

- (IBAction)digitPressed:(id)sender,  

你可以查看標籤的幫助下調用該函數像

[calc_view_controller digitPressed:[calc_view viewWithTag:6]; 

以上實現部分中定義的實例爲

app_delegate   = [[UIApplication sharedApplication] delegate]; 
calc_view_controller = app_delegate.viewController; 
calc_view   = calc_view_controller.view; 

現在,因爲我的按鈕類型是(UIButton *)我不能使用view標記,有沒有其他替代UIButton類型?
如果是這樣,你能舉個例子嗎?

+0

如何識別digitPressed中的正確按鈕:?你比較標籤或指針? –

+0

我使用sender.titleLabel.text – Gamerlegend

回答

1

一個按鈕是一個視圖,所以-viewWithTag:會發現它很好。唯一的問題是你的sender類型不與-viewWithTag:返回的類型同意,但你可以解決與鑄造如果你相信你會回來的觀點是一個按鈕,或者你可以先檢查:

[calc_view digitPressed:(UIButton*)[calc_view viewWithTag:6]]; 

或:

UIButton *button = (UIButton*)[calc_view viewWithTag:6]]; 
if ([button isKindOfClass:[UIButton class]]) { 
    [calc_view digitPressed:button]; 
} 

無論是在工作實踐;後者更安全,可以很容易地添加額外的測試:如果按鈕不是UIButton,則可能會失敗。

+1

感謝迦勒,這個訣竅:) – Gamerlegend

0

而不是調用IBAction方法,我會調用執行加法的具體方法。

有許多的事情,你可以測試在這裏,例如:

  1. UIButton對象發送正確的值digitPressed方法
  2. digitPressed方法正確地從UIButton對象提取值並將該值傳遞給add方法
  3. add方法的結果是您期望的結果

你的測試多少取決於你,我個人不會太在1和2上掛起來。如果邏輯錯誤,這兩者中的任何一個都會變得明顯,並且它們不太可能吸引迴歸。

對我來說,完全測試add方法更重要。發送大量常見案例,邊緣案例和邊界值,而不用擔心UIButton印刷機的流量。

1

你這樣做不好,你不應該比較sender.titleLabel.text。想一想當你改變標籤文本時會發生什麼,因爲你必須用另一種語言發佈你的應用程序。

但是,如果你仍然想要處理按鈕識別的方式,你必須在你的單元測試中創建UIButton並將其設置爲正確的標籤文本值。