2013-04-05 117 views
3

我的應用程序中有一個UIbutton。當我點擊按鈕時,它將刪除NSMutableArray中的最後一個對象。爲此,我想寫單元測試。請任何一個給我你的建議。IOS中的單元測試

我用這個代碼,當其上執行的UIButton點擊瞭解:

[viewControllerObject.backButton1 sendActionsForControlEvents:UIControlEventTouchUpInside]; 

感謝, 瑞奇。

+0

wt你想要?你想創建按鈕的最後一個OBJ數組的方法 – iPatel 2013-04-05 09:06:14

+0

我正在使用單元測試,所以如何檢查這個按鈕是點擊使用像XCTAssertTrue等 – 2014-07-07 06:31:53

回答

1

你可以用幾種不同的方法做到這一點。一個建議是看這個偉大的tutorial

該視頻解釋瞭如何在UIKit單元測試。

+0

孤獨的鏈接被認爲是一個不好的答案(見[faq#刪除]),因爲它本身毫無意義,並且**目標資源不保證在將來活着**。 [這將是最好的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 – j0k 2013-04-05 13:22:43

1

XCode本機支持單元測試。如果您啓動一個新項目,請查找「包含單元測試」的複選標記。如果你使用它,你將會有一個名爲<project_name>Tests的文件夾。在那裏打開.m文件,你會看到一個可以放置測試的- (void)testExample方法。

您可以使用多種功能進行測試,如STAssertTrueSTAssertNotNil。看看這裏的蘋果文檔:https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/UnitTesting/03-Writing_Test_Case_Methods/writing_tests.html#//apple_ref/doc/uid/TP40002143-CH4-SW1

在你的情況,你也許可以做這樣的事情:

NSInteger arrayCount = mArray.count; 
[yourInstance performButtonAction]; 
STAssertEquals(arrayCount -1, mArray.count); 
+0

如何從apptest.m向viewcontroller調用buttonAction。 – user1844142 2013-04-05 13:46:44

+0

由於測試是獨立運行的,您可以在'setup'方法中創建viewController。這樣你就有了一個本地參考。 – 2013-04-05 14:25:57

3

在「單位」的水平還有你測試兩件事情:

  • 是否按下按鈕發送操作方法?
  • 操作方法是否從數組中刪除最後一個對象?

忽略第一個,這是蘋果的問題(或者說它是一個集成測試)。第二個很簡單,如果你考慮組裝,行爲,斷言過程:

  1. 組裝:建立你的視圖控制器及其內容數組。
  2. 動作:調用動作方法。
  3. 斷言:檢查最後一個對象是否被刪除。
-(void)testRemovalOfLastObjectOnButtonAction 
{ 
    //... build and populate the view controller 
    id lastObject = [array lastObject]; 
    [viewController buttonTapped: sender]; 
    STAssertFalse([array containsObject: lastObject], @"Object %@ should be removed", lastObject);  
} 

注意我明確的最後一個對象是否刪除了測試,而不是數是否遞減:如果任何對象中刪除的可能發生。

+0

嗨OMZ,我得到測試失敗,當我執行上述code.it正確與否? – user1844142 2013-04-05 13:31:58

+0

@ user1844142什麼具體是失敗?如果斷言失敗,那麼你的代碼不會從數組中移除對象。 – 2013-04-05 13:55:27