0

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

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

我尝试了下面的代码,它编译没有错误并且可以运行,只是无法观察到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 测试期间调用视图控制器方法来更新某些数据/视图的正确方法吗?或者您对进行这种测试有什么建议吗?

谢谢你。

4

1 回答 1

0

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

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

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

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

于 2014-10-08T19:01:30.873 回答