2013-04-05 89 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