编写围绕应用程序的iOS应用程序测试

时间:2011-11-30 10:07:55

标签: objective-c ios testing uiviewcontroller

我正在尝试根据Apple开发网站上的 iPhoneUnitTests 示例为我的应用编写一些应用程序测试。特别是我无法通过应用程序中的元素“点击”,即模拟点击调用方法,使视图控制器显示o消失。

例如我有这个测试:

- (void)testAddMeal
{
  HomeScreenController *hsCtrl = (HomeScreenController*)mainViewController;
  [hsCtrl tableView:hsCtrl.tblView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
  nutritionStrategyController = (NutritionStrategyController*)((UINavigationController*)mainViewController.modalViewController).topViewController;
  [nutritionStrategyController tableView:nutritionStrategyController.tblView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
}

这会打开第一个选择表格单元格的UIViewController,然后第二个UIViewController会出现在新的UIViewController中选择一个表格单元格。 问题是,测试失败并出现此错误:

 Unknown.m:0: error: -[NutritionStrategyTests testAddMeal] : Attempting to begin a modal transition from <UINavigationController: 0x113a2fc0> to <NewMealTrackingController: 0x9353090> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed

所以我的问题是,如何为此创建测试?

1 个答案:

答案 0 :(得分:0)

单元测试用于测试代码,类,模块等特定位的行为。如果要自动化用户输入,这是一种不同的测试,您可以查看UIAutomation instrument,这是致力于此类测试。

  

自动化仪器,在您的测试脚本的指导下,练习   应用程序的用户界面元素,允许您记录   结果供您分析。自动化功能可以模拟许多   支持多任务和运行的设备支持的用户操作   iOS 4.0或更高版本。您的测试脚本可以在iOS设备上运行   在iOS模拟器中没有修改。

     

自动化仪器的一个重要好处是您可以使用   它与其他仪器一起执行复杂的测试,如   追踪内存泄漏并隔离性能原因   问题。