【问题标题】:is it possible to force UIView to reload with some updated data during KIF UI tests?是否可以在 KIF UI 测试期间强制 UIView 重新加载一些更新的数据?
【发布时间】:2014-09-23 05:56:48
【问题描述】:

我正在使用 KIF 框架进行一些 UI 测试,想知道是否可以在 KIF UI 测试期间强制 UIView 重新加载(通过调用视图控制器中的某些方法)......?

假设我有一个主视图 UITableView 有 5 个数据项,在 KIF 测试运行期间,我想调用 UITableViewController 方法来添加一些数据项并调用 UITableView reload 以刷新 @987654325 @。

我试了下面的代码,编译没有错误,可以运行,只是看不到UITableView有任何变化。

-(void)testReloadTableView
{
    [tester waitForTimeInterval:5];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    self.vc = [storyboard instantiateViewControllerWithIdentifier:@"tableviewController"];
    [self.vc performSelectorOnMainThread:@selector(loadView) withObject:nil waitUntilDone:YES];
    [self.vc addData] //a method to add some data
    [self.vc.tableview reloadData];
}

这是在 KIF 测试期间调用视图控制器方法来更新某些数据/视图的正确方法吗?或者您对进行此类测试有什么建议?

谢谢。

【问题讨论】:

    标签: ios objective-c uitableview uistoryboard kif-framework


    【解决方案1】:

    您可以在 KIF 测试中调用应用程序中的任何方法。因此,您的代码的问题在于它没有达到您想要的结果。它与 KIF 框架没有任何关系,因为同样的代码在 KIF 测试之外也无法达到预期的结果。

    然而,KIF 框架的目的是在功能上测试 iOS 应用程序。这意味着,要测试用户与应用程序的交互。在功能测试期间,您应该通过编写与应用的功能交互的脚本来添加数据,就像用户向应用添加额外数据一样。

    但是,在某些用户场景中会自动插入数据,例如当您的应用程序由于从网络服务同步的新信息而更新了数据时。如果是这样,我建议您首先需要的是单元测试,以确保您的表视图在更新基础数据源时正确更新,并使用提供用于测试的数据。确认代码正常工作后,您可以使用该方法为 KIF 中的功能测试模拟相同的更新。

    如果您只是想在功能测试中走捷径,直接跳到表中已有的数据,以便您可以对其进行功能测试,我建议值得重新思维。最好让功能测试测试完整的功能路径。可以在您的 KIF 测试类中创建方法,这些方法本身不是测试,但包含在您的测试中调用的 KIF 任务(等待查看、点击屏幕上的项目等)。如果您有多个要从应用程序中的特定点开始运行的测试,这使您可以通过从多个测试调用它来重用此代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 2017-11-29
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多