Calabash - 不要在启动时重新安装应用程序

时间:2015-10-13 10:51:00

标签: android automated-tests android-testing calabash calabash-android

首次运行时我的应用必须进行身份验证。

我有一个具有不同标记方案的功能。现在我需要运行几个场景,但每次运行以下命令

.linear-gradient(@colors) {
    background: -webkit-linear-gradient(@colors); 
    background: -o-linear-gradient(@colors); 
    background: -moz-linear-gradient(@colors);
    background: linear-gradient(@colors); 
}

body > header {
    .linear-gradient(red, yellow, blue;);
}

我的应用程序重新安装,导致测试在我的@Alert场景中失败。如何告诉calabash不重新安装应用程序?

从谷歌搜索我发现this说:

calabash-android run /path/to/apk features/my.feature --tags @Alert

但我正在寻找一种命令或更优雅的方式去做我想做的事。

2 个答案:

答案 0 :(得分:1)

我认为您需要更新app_installation_hooks并添加标记为Before的钩子。

Calabash iOS Smoke Test 01_launch.rb(是的,它是一个iOS示例,但原理是相同的)有我的意思的例子。

Before('@reset_app_btw_scenarios') do
  if xamarin_test_cloud?
    ENV['RESET_BETWEEN_SCENARIOS'] = '1'
  elsif LaunchControl.target_is_simulator?
    target = LaunchControl.target
    simulator = RunLoop::Device.device_with_identifier(target)
    app = RunLoop::App.new(ENV['APP'])
    core_sim = RunLoop::CoreSimulator.new(simulator, app)
    core_sim.reset_app_sandbox
  else
    LaunchControl.install_on_physical_device
  end
end

答案 1 :(得分:0)

Cucumber提供了许多hooks,它们允许我们在Cucumber测试周期的不同点运行块。

我认为你需要的是标记钩子

有时您可能希望某个挂钩仅在某些情况下运行。这可以通过将Before,After,Around或AfterStep挂钩与一个或多个标签相关联来实现。