gpt4 book ai didi

ios - 从代码进行 Storyboard UI 测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:18:10 26 4
gpt4 key购买 nike

我有一个 iOS 应用程序,我想通过代码(使用单元测试)测试它的 UI。我想模仿用户的事件和 Storyboard事件:点击按钮,点击 barbutton,写入文本字段,执行 segue。

我对序列有疑问。我在 NavigationController 中有一个 TableViewConrtoller。首先,如何从代码访问 TableViewController?

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UINavigationController *nav = [storyboard instantiateInitialViewController];
GoodHabitsViewController *good = [nav.viewControllers objectAtIndex:0];

NSLog(@"%@", good.addButton.title);

[good performSegueWithIdentifier:@"AddGoodHabitSegue" sender:good];

NSLog 写入正确的值,按钮的标题是“添加”,并且“添加”出现在日志中。但是在 performSequeWithIdentifier 之后出现以下警告:

Warning: Attempt to present <AddGoodHabitViewController: 0x74c8310> on <UINavigationController: 0x764e120> whose view is not in the window hierarchy!

如何执行序列,如何推送 addButton (UIBarButton) 以及如何引用 AddGoodHabitViewController(序列点所在的位置)。

最佳答案

有两种测试可以在 OCUnit 平台上运行 - 所谓的“应用程序”测试和所谓的“逻辑”测试。

  • 只有“应用程序”测试允许您练习 UIViewControllers、UIViews 等。如果您在创建项目时指定了“create test target”,它将使用“application”样式。否则稍后添加测试集目标,默认情况下使用“逻辑”样式。为了隐藏现有的测试目标以使用“应用程序”测试,TwoBit Labs 有一个很好的方法:guide

  • 另一种一直练习代码直至 View Controller 和 View 的方法是使用 Cedar BDD test framework . Cedar 测试在 iOS 应用程序内部运行,因此除了能够测试 ViewControllers 和 Views 之外,还可以在设备或模拟器上进行测试。

  • UIAutomation 允许通过驱动 UI 本身(而不是运行 UI 代码)来执行自动化功能测试。我对 UIAutomation 的问题是,据我所知,它不可能从 cmd 行执行它,这使得它很难包含在自动化测试套件中——一个将由持续集成服务器运行的测试套件。 . . .有人可能会使用 Automator.app 或类似工具想出解决方法,但到目前为止还没有人想出解决方法。

  • Calabash是另一个很棒的 UI 测试框架,可以从 cmd 行运行,因此不会受到我上面描述的限制,wrt UIAutomation。

  • 请记住,自动化功能测试与在代码级别测试 UIViewControllers 和 View 是两件截然不同的事情。后者当然有值(value),并且只需要正确设置捆绑加载器。

更新:在最新版本的 Xcode 5+ 中,应用程序样式测试是默认设置。

关于ios - 从代码进行 Storyboard UI 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com