Я пытаюсь запустить свой мобильный проект 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>
Что это может быть?




Команда 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, чтобы избежать парсера тестовых пакетов.
ХТН
-Джеймс
Кажется, я уже ответил на этот вопрос здесь, на самом деле stackoverflow.com/questions/56150150/…
Поместить testng.xml в src/test/resources в моем случае не работает. Не знаю почему, но есть вероятность, что это связано с тем, что у меня есть это в моем pom: <testResources> <testResource> <directory>${project.basedir}/src/test/java/cucumber</directory> </ testResource> </testResources>
Да, если вы используете тег тестовых ресурсов, он переопределит этот путь по умолчанию в super pom.xml, поэтому просто создайте новый тег testResource и укажите там путь src/test/resources.
То есть вы имеете в виду, что я должен создать еще один testResource и поместить его в тот же testResources? Итак, у меня будет 2 тега testResource? Таким образом, они оба будут включены в банку?
Это другой тег testResource в моем pom <testResource> <directory>${project.basedir}/src/test/java/cucumber</directory> </testResource>
хороший хак для запуска команды mvn на ферме устройств AWS
Это не ошибка, это должно быть предупреждением. Вам нужно будет включить его в банку. Ознакомьтесь с этой статьей поддержки, она должна помочь с этим. aws.amazon.com/premiumsupport/knowledge-center/…