Можно ли запустить один и тот же набор огурцов на нескольких устройствах с помощью одной команды maven? - PullRequest
0 голосов
/ 28 мая 2019

У меня есть платформа cucumber / appium для тестирования на мобильных устройствах.Теперь, когда cucumber и appium поддерживают параллельные запуски, я настроил его так, чтобы распределять функции по каждому подключенному устройству (junit разделяет только функции, а не сценарии).Я добился этого с помощью класса DriverFactory.Этот класс прекрасно работает, но параллельные запуски в этой ситуации действительно полезны, только если каждый раз используется один и тот же драйвер (например, ChromeDriver).Мои устройства добавляются в пул во время метода junit @BeforeClass, и мой DriverFactory использует их одно за другим до тех пор, пока они не станут пустыми.

Хотя моя проблема заключается в том, что, хотя и быстро, я иногда хочу запустить весь набор на каждом подключенномустройство (только потому, что тест проходит на одном устройстве, не означает, что он пройдет на других устройствах).

Я думаю, что пакетный файл с несколькими командами maven может это сделать, но есть ликак я могу сделать все это одной командой?

Я использую maven-failsafe, так как не хочу останавливать выполнение при неудачных тестах, моя настройка pom ниже, которая разделяет функции между устройствами, еслиподключено 2 устройства

У меня есть один класс бегунов с огурцами.Я не смотрел на Дженкинса.Сначала я надеялся узнать, смогу ли я сделать все это на своем Mac, учитывая, что он уже работает для каждой отдельной функции.

Это мой соответствующий maven-failsafe код.Я могу обновить threadCount для любого количества устройств, которые я подключил (изучая это динамически).Я попытался использовать наборы вместо методов, но затем он запускает весь набор только на одном устройстве

                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>**/RunCucumberTest.java</include>
                            </includes>
                            <parallel>methods</parallel>
                            <threadCount>2</threadCount>
                            <perCoreThreadCount>false</perCoreThreadCount>
                        </configuration>
                    </execution>
                </executions>

Любая помощь будет оценена.Если есть что-то, что вам нужно знать, пожалуйста, дайте мне знать, или если какой-то из моих кодов поможет, я могу опубликовать это здесь

1 Ответ

0 голосов
/ 28 мая 2019

Да, вы можете.Для этого вам необходимо иметь N Нет реализации WebDriver пропорционально нескольким платформам ниже -

  1. Для iOS Платформа -> IOSDriver
  2. Для Android Platfrom -> AndroidDriver
  3. Для Web Platfrom -> WebDriver

Кроме того, вам потребуется написать потокобезопасный код, который гарантирует безопасностьвыполнение несколькими потоками одновременно.Также вам следует избегать статических переменных и методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...