1

Я новичок в Ruby/Calabash и сумел установить специальную инфраструктуру автоматизации calabash для ios с шаблоном модели объектов страницы и ее успешным запуском.Ошибка Calabash - несоответствие суперкласса для класса AuthenticationPage

Я хочу расширить те же рамки для Android. Я создал специальную папку для ios и android внутри папки с функциями и думал о том, что у них есть соответствующие объекты страниц внутри этой папки.

Но когда я запустил calabash-android, calabash обнаружил, что аналогичный класс страниц существует в папке ios и начал выдавать сообщение об ошибке. Я хочу следовать тому же соглашению об именах для ios и android-страниц, не сталкиваясь с этим конфликтом имен. Является ли это возможным?

superclass mismatch for class AuthenticationPage (TypeError) 
    /Users/MACUSER/Documents/Automation/features/ios/pages/authentication_page. rb:5:in `<top (required)>' 
    /Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/rb_support/rb_language.rb:95:in `load' 
    /Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/rb_support/rb_language.rb:95:in `load_code_file' 
    /Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/runtime/support_code.rb:180:in `load_file' 
    /Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/runtime/support_code.rb:83:in `block in load_files!' 
/Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/runtime/support_code.rb:82:in `each' 
/Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/runtime/support_code.rb:82:in `load_files!' 
/Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/runtime.rb:184:in `load_step_definitions' 
/Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/runtime.rb:42:in `run!' 
/Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/lib/cucumber/cli/main.rb:47:in `execute!' 
/Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.18/bin/cucumber:13:in `<top (required)>' 
/usr/bin/cucumber:23:in `load' 
/usr/bin/cucumber:23:in `<main>' 
+0

Позвольте мне знать, если вам нужна дополнительная информация :( – Vinee

ответ

1

Основываясь на вашем описании проблемы, неясно, в чем проблема. Я думаю, что это поможет, если вы добавите более подробную информацию о структурах папок и файлах.

Но поскольку вы не указали профили как все, что я подозреваю, что вы не используете файл .yml.

Когда вы выполняете свои тесты, вы должны определить, какой профиль вы используете, и иметь один для iOS и один для Android. Для каждого профиля вы определяете, какие папки следует включать.

Как это

android: PLATFORM=android RESET_BETWEEN_SCENARIOS=1 -r features/support -r features/android/support -r features/android/helpers -r features/step_definitions -r features/android/pages/ 

И тогда, когда вы выполняете тесты, которые определяют для какого профиля

calabash-android run path_to.apk -p android features/login.feature 

Если вы еще не вы должны смотреть на любом Xamarin cross-platform tutorial или на Github page for same

+0

Спасибо за ваш ответ, но я использую .yml файл и conigured мой .yml, как упоминалось выше, только моя проблема, я создал папку независимую.. для объекта страницы в папке ios и android, но получение ошибки компиляции, если ruby ​​находит тот же класс, присутствующий в двух разных каталогах, и я не уверен, как обойти это. Является ли это ясным, если нет, пожалуйста, дайте мне знать :( – Vinee

+0

Could вы, возможно, добавили некоторый текст о том, как ваша структура папок? У вас должны быть разные папки для каждой платформы. Как/features/android/pages/and/features/ios/pages /. Как вы определяете классы на двух платформах? вы используете ABAse и IBase? – Lasse

0

имеет схожую проблему, решается путем добавления опции исключения "--exclude ios" в профиль андроида в config/cucum ber.yml файл (и «--exclude андроид» для ИОС соответственно)

--- 
android: PLATFORM=android --exclude ios -r features/support -r features/android -r features/step_definitions -r features/android/pages 


ios: PLATFORM=ios APP_BUNDLE_PATH=path_to_your.app --exclude android -r features/support -r features/ios/support -r features/ios/helpers -r features/step_definitions -r features/ios/pages 

, кажется, огурец ошибка, потому что в соответствии с огурцом DOCS ключ -r должен предотвратить загрузку всех файлов, за исключением тех, которые указаны в явном виде

-r, --require LIBRARY|DIR  Require files before executing the features. If this 
           option is not specified, all *.rb files that are 
           siblings or below the features will be loaded auto- 
           matically. Automatic loading is disabled when this 
           option is specified, and all loading becomes explicit. 
           Files under directories named "support" are always 
           loaded first. 

...

-e, --exclude PATTERN   Don't run feature files or require ruby files matching PATTERN 
0

Xamarin говорит, вы должны дать профиль и конфигурации в команде --profile ios --config=config/cucumber.yml. Смотрите это:

test-cloud submit prebuilt/Moda-cal.ipa 93dbwrmwrb0d65099640f23 --devices 99dwdhw846 --series "ip7" --locale "en_US" --app-name "Moda" --user [email protected] --profile ios --config=config/cucumber.yml 

test-cloud submit prebuilt/Moda.apk 93dbwrmwrb06sfu440f23 --devices 9933nb846 --series "nex" --locale "en_US" --app-name "Moda" --user [email protected] --profile android --config=config/cucumber.yml