适用于iOS的单元测试
问题描述:
我是单元测试新手,想尝试一下。适用于iOS的单元测试
我创建了一个按钮(获取总和)和3个文本框(输入2个数字并输出总和)的视图控制器。
int aNum = [self.firstNumber.text intValue];
int bNum = [self.secondNumber.text intValue];
sum = aNum + bNum;
self.total.text = [NSString stringWithFormat:@"%i", sum];
[self dismissKeyboard];
而且我的测试代码:
vc = [[TestingViewController alloc] init];
vc.firstNumber.text = @"1";
vc.secondNumber.text = @"2";
[vc getSum:nil];
STAssertTrue([vc.total.text isEqualToString:@"3"], @"total should be 3");
测试失败,因为我曾尝试与UI元素的工作。
我的问题是:是否可以使用这样的UI元素进行测试?我将如何编写一个测试来实现这个目标?
谢谢你们!
答
你需要下载这是通过访问视图所做的NIB(见iOS' view lifecycle):
vc = [[TestingViewController alloc] init];
// vc.firstNumber is nil right now, because the view isn't loaded
[vc view];
// vc.firstNumber now exists
vc.firstNumber.text = @"1";
vc.secondNumber.text = @"2";
[vc getSum:nil];
STAssertTrue([vc.total.text isEqualToString:@"3"], @"total should be 3");
另外,如果视图是一个UIWindow层次结构的一部分,你不需要做这个(即 - 端到端测试)
答
是的,在单元测试中测试UI元素是绝对有可能的。
技术,这和以上(包括依赖于网络的测试代码)是覆盖在测试驱动的iOS开发(开发者库)由格雷厄姆·李是一个巨大的资源: http://www.amazon.com/Test-Driven-iOS-Development-Developers-Library/dp/0321774183
可能是该视图ISN没有得到装载。当我开始在iOS上进行单元测试时,我遇到了同样的问题。尝试调用[vc loadView];在你初始化viewcontroller之后。
vc = [[TestingViewController alloc] init];
[vc loadView];
答
您试图在运行时测试应用程序的功能。你了解单元测试和应用程序测试之间的区别吗?你是否阅读并服从documentation on application tests?你在设备上运行吗?
这里是一个有用的教程:http://cocoawithlove.com/2009/12/sample-iphone-application-with-complete.html
答
测试用户界面,ü可以使用JavaScript和在仪器上运行。