Как запустить команду maven в AWS Device Farm

Я пытаюсь запустить свой мобильный проект Java на ферме устройств, используя maven. Когда я запускаю эту команду на своем локальном компьютере в правильном каталоге, она работает:

 mvn test -D "cucumber.options = "src/test/java/cucumber/features" --glue 
cucumber.steps --tags @InstallApp"

Я поместил эту команду в файл yaml на ферме устройств aws, но она не работает. Это ошибка, которую я получаю:

        [DeviceFarm] echo "Start Appium TestNG test"
     Start Appium TestNG test
    [DeviceFarm] mvn test -D 
    "cucumber.options = "src/test/java/cucumber/features" --glue 
cucumber.steps 
    --tags @InstallApp"
    [INFO] Scanning for projects...
    [INFO] BUILD FAILURE
    [ERROR] The goal you specified requires a project to execute but there 
     is 
     no POM in this directory (/tmp/scratchncneoU.scratch/test- 
 packageO6o8s7). 
  Please verify you invoked Maven from the correct directory. -> [Help 1]

Как запустить эту команду maven на ферме устройств? Где там находится помпа?

Спасибо

После ввода этой команды в файле yaml: [DeviceFarm] java -Dappium.screenshots.dir=$DEVICEFARM_SCREENSHOT_PATH -D"cucumber.options="classpath:features" --glue cucumber.steps --tags @InstallApp" org.testng.TestNG -testjar *-tests.jar - г $DEVICEFARM_LOG_DIR/test-output -verbose 10

Я получаю сообщение об ошибке: Не удалось найти файл testng.xml в файле jar, хотя он есть в моем pom:

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  

Что это может быть?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
971
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Команда mvn не выполняется, потому что ваш пакет развертывания не содержит весь проект. Судя по звуку с текущим пакетом развертывания, вы сможете делать то, что хотите, с помощью этой команды:

- java -Dappium.screenshots.dir=$DEVICEFARM_SCREENSHOT_PATH -D"cucumber.options = "src/test/java/cucumber/features" --glue cucumber.steps --tags @InstallApp" org.testng.TestNG -testjar *-tests.jar -d $DEVICEFARM_LOG_DIR/test-output -verbose 10

В противном случае, если вы хотите использовать maven, вам нужно заархивировать весь проект и включить его pom.xml. Так, например, используя примеры java-тестов огурца

git clone https://github.com/aws-samples/aws-device-farm-appium-cucumber-tests-for-sample-app.git
zip -r deployment_package.zip aws-device-farm-appium-cucumber-tests-for-sample-app

Тогда вы сможете использовать maven в файле testspec.yml. Например, я мог бы выполнить следующую команду для примера: mvn clean test после перехода в каталог проекта, а затем, чтобы получить результаты, мне пришлось экспортировать целевой каталог.

  test:
    commands:
      # Your test package is downloaded in $DEVICEFARM_TEST_PACKAGE_PATH so we first change directory to that path.
      - echo "Navigate to test package directory"
      - cd $DEVICEFARM_TEST_PACKAGE_PATH/aws-device-farm-appium-cucumber-tests-for-sample-app
      - mvn clean test
...
artifacts:
  # By default, Device Farm will collect your artifacts from following directories
  - $DEVICEFARM_TEST_PACKAGE_PATH/aws-device-farm-appium-cucumber-tests-for-sample-app/target
  - $DEVICEFARM_LOG_DIR

Однако вам нужно будет загрузить zip-файл в качестве типа теста APPIUM_NODE, чтобы избежать парсера тестовых пакетов.

ХТН

-Джеймс

Это не ошибка, это должно быть предупреждением. Вам нужно будет включить его в банку. Ознакомьтесь с этой статьей поддержки, она должна помочь с этим. aws.amazon.com/premiumsupport/knowledge-center/…

jmp 19.05.2019 18:18

Кажется, я уже ответил на этот вопрос здесь, на самом деле stackoverflow.com/questions/56150150/…

jmp 19.05.2019 18:56

Поместить testng.xml в src/test/resources в моем случае не работает. Не знаю почему, но есть вероятность, что это связано с тем, что у меня есть это в моем pom: <testResources> <testResource> <directory>${project.basedir}/src/test/java/cucumber</direct‌​ory> </ testResource> </testResources>

shay n 20.05.2019 13:56

Да, если вы используете тег тестовых ресурсов, он переопределит этот путь по умолчанию в super pom.xml, поэтому просто создайте новый тег testResource и укажите там путь src/test/resources.

jmp 20.05.2019 14:05

То есть вы имеете в виду, что я должен создать еще один testResource и поместить его в тот же testResources? Итак, у меня будет 2 тега testResource? Таким образом, они оба будут включены в банку?

shay n 20.05.2019 14:23

Это другой тег testResource в моем pom <testResource> <directory>${project.basedir}/src/test/java/cucumber</direct‌​ory> </testResource>

shay n 20.05.2019 14:26

хороший хак для запуска команды mvn на ферме устройств AWS

Ankur Singh 19.08.2021 12:17

Другие вопросы по теме