我的应用程序中有一个 UIbutton。当我单击该按钮时,它会删除 NSMutableArray 中的最后一个对象。为此,我想编写单元测试。请任何人给我你的建议。
我使用此代码来了解何时执行了对 UIButton 的单击:
[viewControllerObject.backButton1 sendActionsForControlEvents:UIControlEventTouchUpInside];
谢谢,瑞奇。
我的应用程序中有一个 UIbutton。当我单击该按钮时,它会删除 NSMutableArray 中的最后一个对象。为此,我想编写单元测试。请任何人给我你的建议。
我使用此代码来了解何时执行了对 UIButton 的单击:
[viewControllerObject.backButton1 sendActionsForControlEvents:UIControlEventTouchUpInside];
谢谢,瑞奇。
在“单元”级别,您正在测试两件事:
忽略第一个,这是 Apple 的问题(或者说这是一个集成测试)。如果您考虑 Assemble、Act、Assert 过程,则第二个很简单:
-(void)testRemovalOfLastObjectOnButtonAction
{
//... build and populate the view controller
id lastObject = [array lastObject];
[viewController buttonTapped: sender];
STAssertFalse([array containsObject: lastObject], @"Object %@ should be removed", lastObject);
}
注意我明确测试最后一个对象是否被删除,而不是计数是否减少:如果任何对象被删除,就会发生这种情况。
您可以通过几种不同的方式执行此操作。一个建议是观看这个很棒的教程
该视频解释了如何在 UIKit 中进行单元测试。
XCode 原生支持单元测试。如果您开始一个新项目,请查找显示“包含单元测试”的复选标记。如果你使用它,你将有一个名为<project_name>Tests
. 打开其中的 .m 文件,您将看到一个- (void)testExample
可以放置测试的方法。
您可以使用许多函数进行测试,例如STAssertTrue
和STAssertNotNil
。在此处查看 Apple 文档: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);