Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS的单元测试_Iphone_Ios_Xcode_Unit Testing - Fatal编程技术网

Iphone iOS的单元测试

Iphone iOS的单元测试,iphone,ios,xcode,unit-testing,Iphone,Ios,Xcode,Unit Testing,我是单元测试新手,正在尝试一些东西 我创建了一个视图控制器,它有1个按钮(get sum)和3个文本字段(输入2个数字并输出总和) 以及我的测试代码: vc = [[TestingViewController alloc] init]; vc.firstNumber.text = @"1"; vc.secondNumber.text = @"2"; [vc getSum:nil]; STAssertTrue([vc.total.text isEqualToString:@"3"], @"to

我是单元测试新手,正在尝试一些东西

我创建了一个视图控制器,它有1个按钮(get sum)和3个文本字段(输入2个数字并输出总和)

以及我的测试代码:

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(请参阅):


或者,如果视图是UIWindow层次结构的一部分,则不需要这样做(即端到端测试)

是的,在单元测试中测试UI元素绝对是可能的

Graham Lee的测试驱动iOS开发(开发者库)中涵盖了这方面的技术以及其他技术(包括依赖于网络的测试代码),这是一个很好的资源:

可能是视图未加载。当我开始在iOS上进行单元测试时,我也遇到了同样的问题。尝试调用[vc loadView];初始化viewcontroller之后

vc = [[TestingViewController alloc] init];
[vc loadView];

您正在尝试在应用程序运行时测试其功能。您了解单元测试和应用程序测试之间的区别吗?你阅读并遵守了规则吗?您正在设备上运行吗


这里有一个有用的教程:

要测试UI,您可以使用javascript并在仪器中运行

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");
vc = [[TestingViewController alloc] init];
[vc loadView];