【问题标题】:What is the appropriate way to check that I am on a particular screen in Calabash testing?在 Calabash 测试中检查我是否在特定屏幕上的适当方法是什么?
【发布时间】:2015-02-26 06:29:15
【问题描述】:

我希望在测试期间断言我在特定屏幕上,如果不是,那么我应该失败。推荐的方法是什么?例如,如果我有这样的测试:

Given that I am on the Login screen
When I press "Sign Up"
Then I should be on the Sign up screen

我已经为所涉及的两个屏幕编写了页面对象模型,并且它们每个都定义了一个特征方法。

我看过了,有一个 TaskyPro 示例 (https://github.com/xamarin/mobile-samples/tree/master/TaskyPro-Calabash/features/step_definitions),它定义了一个“assert_screen”方法。我已经尝试将它放入我的项目中,但它不起作用,因为@screen 总是为零。我没有 Xamarin,所以我无法构建他们的项目并对其进行测试。

【问题讨论】:

  • 你能在这里粘贴一些页面模型,特别是关于你如何设置@screen值的部分。

标签: calabash calabash-ios calabash-android


【解决方案1】:

您需要先分配@screen

如果您的屏幕对象来自Calabash::IBase (iOS) 或Calabash::ABase (Android),您可以使用内置的await 方法。您只需为屏幕设置traittitle

一个很好的例子是“Calabash 跨平台示例”:https://github.com/calabash/x-platform-example 在那里您可以看到如何分配屏幕/页面对象、如何制作屏幕/页面对象以及如何检查屏幕是否可见的示例。

我们在整个测试中都使用屏幕对象,当您需要在多个平台上使用相同的测试时,它们会很有帮助。

我建议您也使用屏幕/页面对象上的transition 方法在屏幕之间导航。

【讨论】:

  • 在发这个帖子之前,我从来没有听说过过渡方法。我做了一个快速的谷歌搜索,我唯一找到的就是源列表。他们的任何文档中都没有。还有更多这样的方法,我应该注意吗?
  • 自从我回答了这个问题后,我们改变了使用屏幕/页面的方式。我们有一些从多个地方使用的步骤,因此我们不能假设@screen 始终是步骤开始时的正确屏幕。因此,我们在步骤开始时为新实例化的屏幕对象分配一个局部变量。
猜你喜欢
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
相关资源
最近更新 更多