使用 ruby 黄瓜和葫芦时出错?

Error while using ruby cucumber and calabash?

/usr/bin/ruby -EUTF-8 -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /usr/bin/cucumber /Users/aalra01/RubymineProjects/wendys-android/Wendys/features/menu/menu.feature --format Teamcity::Cucumber::Formatter --expand --name "^The menu items are separated into their respective categories$" --color -r features 测试开始于10:15 AM .. . 鉴于我在菜单# features/step_definitions/menu/menu.rb:18 当我select 类别# features/step_definitions/menu/menu.rb:24 然后我被带到#features/step_definitions/menu/menu 部分。 rb:34 2102 KB/s(0.260 秒内 560131 字节)2167 KB/s(4.079 秒内 9053374 字节)java.lang.SecurityException:权限拒绝:启动检测 ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2814,uid=2814 不允许,因为包 com.wendys.wendys.test 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java: 950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法)在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:inGiven I am on the menu' Skipped step Skipped stepCould not t在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java: 296)在com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源)在com.android.ddmlib.CalabashDevice.getScreenshot(未知来源)在sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源)在sh.calaba.screenshot.ScreenshotTaker.main(未知来源)java.lang.SecurityException:权限被拒绝: 从 pid=2831 开始检测 ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner},不允许 uid=2831 因为包 com.wendys.wendys.test 没有与目标匹配的签名com.wendys.wendys 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609)在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:inGiven I am on the menu' Skipped step Skipped stepCould not take screenshot com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296)在com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源)在com.android.ddmlib.CalabashDevice.getScreenshot(未知来源)在sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源)在sh.calaba.screenshot.ScreenshotTaker.main(未知来源)java.lang.SecurityException:权限拒绝:开始一世nstrumentation ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2848,uid=2848 不允许因为包 com.wendys.wendys.test 没有匹配目标的签名 com.wendys.wendys 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main( Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法)在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: .[=40= .rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:inGiven I am on the menu' Skipped step Skipped stepCould not take screenshot com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源)在 com.android.ddmlib.CalabashDevice.getScreenshot(未知来源)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源)在 sh.calaba.screenshot.ScreenshotTaker.main(未知来源)java.lang.SecurityException:权限拒绝:启动检测 ComponentInfo {com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2865,uid=2865 不允许,因为包 com.wendys.wendys.test 没有匹配目标 [=90= 的签名] 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main (Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:inGiven I am on the menu' Skipped step Skipped stepCould not take screenshotcom.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源)在 com.android.ddmlib.CalabashDevice.getScreenshot(未知来源)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源)在 sh.calaba.screenshot.ScreenshotTaker.main(未知来源)java.lang.SecurityException:权限拒绝:开始检测ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2881,uid=2881 不允许,因为包 com.wendys.wendys.test 没有与目标匹配的签名 com.wendys.wendys 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法)在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers .rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:inGiven I am on the me nu' Skipped step Skipped stepCould not take screenshot com.android.ddmlib.TimeoutException at com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) at com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) at com.android.ddmlib.AdbHelper.getFrameBuffer (AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源) 在 com.android.ddmlib.CalabashDevice.getScreenshot(未知来源) 在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源) 在 sh.calaba.screenshot.ScreenshotTaker.main(未知来源) java.lang.SecurityException:权限被拒绝:从 pid=2899 开始检测 ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner},不允许 uid=2899 因为包 com.wendys.wendys.test 确实在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java: 47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:inGiven I am on the menu'跳过步骤 跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源) 在 com.android.ddmlib.CalabashDevice.getScreenshot(未知来源) 在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源) 在 sh.calaba.screenshot.ScreenshotTaker.main(未知来源e) java.lang.SecurityException:权限被拒绝:从 pid=2916 开始检测 ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner},不允许 uid=2916,因为包 com.wendys.wendys .test 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 [=98= 没有匹配目标 com.wendys.wendys 的签名](ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected : HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单' 跳过步骤 跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 [=116= 截取屏幕截图 com.android.ddmlib.TimeoutException ](AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源) 在 com.android.ddmlib.CalabashDevice.getScreenshot(未知来源) 在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源) 在 sh.calaba.screenshot.ScreenshotTaker.main(未知来源) java.lang.SecurityException:权限被拒绝:从 pid=2933 开始检测 ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner},不允许 uid=2933,因为包 com.wendys.wendys.test在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException 没有匹配目标 com.wendys.wendys 的签名(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法) 在 com.android.internal.os.RuntimeInit.main (RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu. rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上' 跳过步骤 跳过步骤无法截屏 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read (AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源) 在 com.android.ddmlib.CalabashDevice.getScreenshot(未知来源) 在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot (未知来源)在 sh.calaba.screenshot.ScreenshotTaker.main(未知来源)java.lang.SecurityException:权限被拒绝:从 pid=2983 开始检测 ComponentInfo{com.wendys.wendys.test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner}, uid=2983 不允许,因为包 com.wendys.wendys.test 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java: 316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(本机方法) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: 连接被对端重置 ./features/support/screen_object/element_definers.rb:4:in block in element' ./features/support/screen_object/element_definers.rb:35:inblock in button' ./features/step_definitions/menu/menu.rb:21:in /^I am on the menu$/' ./features/menu/menu.feature:10:inGiven I am on the menu' Skipped step Skipped stepCould not take screenshot com.android.ddmlib.TimeoutException at com.android.ddmlib.AdbHelper.read (AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(未知来源) 在com.android.ddmlib.CalabashDevice.getScreenshot(未知来源)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(未知来源)在 sh.calaba.screenshot.ScreenshotTaker.main(未知来源)9 个场景(9 个失败)27 个步骤(9 个失败,18 个跳过)3m33.125s 过程完成退出代码 1

Permission Denial: starting instrumentation Component 错误意味着您没有正确的调试密钥。如果您有密钥库并且它之前工作正常,请检查密钥库是否未更新。如果您没有密钥库,您可以使用自己的密钥库退出应用程序。

calabash-android resign app.apk

来自 - https://github.com/calabash/calabash-android/wiki/Running-Calabash-Android

The apk calabash android runs must be signed with the same keystore as the test-server.

Use the command: calabash-android resign to resign your application.

Building the test-server using calabash-android build will build the test-server and sign it with the same key as the application you are testing.

If debug.keystore is missing, it be recreated with the following command:

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"