2016-08-31 4 views
0

Моего кальян андроида тестового проект имеет следующую структуру:Использование третьей стороны библиотеки рубина в моих калабаш тестов, но получает ошибку

-- myApp.apk 
-- features (directory) 
      |-- my-feature-1-file-name.feature 
      |-- step_definitions (directory) 
      |  calabash_steps.rb 
      |-- support (directory) 
      |  thirdPartyLib.rb 

Мои тестовые кальяны шаги должны использовать стороннюю библиотеку thirdPartyLib.rb. Как вы видите выше, под каталогом features/, у меня есть каталог support/, там, у меня есть файл thirdPartyLib.rb ruby.

Внутри thirdPartyLib.rb, 1-ая строка кода заключается в следующем:

require 'jmespath' 
... 

Когда я иду в корень проекта и запустить тест командой calabash-android run myApp.apk DEBUG=1, я получаю следующее сообщение об ошибке:

DEBUG: Setting Android SDK location to $ANDROID_HOME 
DEBUG: Android SDK location set to '/Users/John/Library/Android/sdk' 
DEBUG: Set aapt path to '/Users/John/Library/Android/sdk/build-tools/23.0.3/aapt' 
DEBUG: Set zipalign path to '/Users/John/Library/Android/sdk/build-tools/23.0.3/zipalign' 
DEBUG: Set adb path to '/Users/John/Library/Android/sdk/platform-tools/adb' 
DEBUG: Set android jar path to '/Users/John/Library/Android/sdk/platforms/android-24/android.jar' 
DEBUG: Setting Java SDK location to $JAVA_HOME 
DEBUG: Java SDK location set to '/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home' 
DEBUG: Found java on PATH 
DEBUG: Set java path to '/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/java' 
DEBUG: Found keytool on PATH 
DEBUG: Set keytool path to '/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/keytool' 
DEBUG: Found jarsigner on PATH 
DEBUG: Set jarsigner path to '/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/jarsigner' 
cannot load such file -- jmespath (LoadError) 

/Users/John/.calabash/sandbox/Rubies/2.1.6-p336/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
/Users/John/.calabash/sandbox/Rubies/2.1.6-p336/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
/Users/John/my-calabash-test/features/support/thirdPartyLib.rb:1:in `<top (required)>' 
... 

Итак, это ошибка загрузки, это выглядит как калебас-андроид не может загрузить файл jmespath (LoadError), объявленный в thirdPartLib.rb. Как я могу избавиться от этой ошибки?

+0

установлен ли jmespath камень? –

+0

Нет. Это не так. Но я не могу установить только драгоценный камень, потому что мне нужно загрузить мой тестовый проект calabash в облачный режим, мне нужны все файлы ruby ​​для сторонних библиотек, помещенные в каталог 'support /' моего тестового проекта. –

+0

Можете ли вы добавить jmespath к ваш Gemfile? –

ответ

0

Вам необходимо установить жемчужину jmespath, чтобы использовать его. Чтобы установить его, вам нужно добавить его в свой gemfile. Вы можете указать локальную копию драгоценного камня следующим

gem "foo", :path => "/path/to/foo" 

пример, взятый из этого вопрос/ответ - How can I specify a local gem in my Gemfile?

+0

Но calabahs-андроид не может загрузить/установить драгоценные камни. Моя проблема заключается в том, как заставить calabash-android быть в состоянии загружать драгоценные камни, чтобы мой тестовый код, вызывающий функции сторонних драгоценных камней, мог работать. –

+0

Если вы устанавливаете пакет до его запуска, он должен иметь возможность загружать их. Разве это не работает? – alannichols

+0

Нет, это не работает, я могу запустить автономный рубиновый скрипт, который требует «aws-sdk», но если я начну запускать тест calabash, который загружает мой отдельный файл ruby, он жалуется на undefined модуль 'aws-sdk'. –