Достаем Properties из Maven profiles в Java код.

Создаем Maven profile

Profile используется для сборки проекта с разными настройками. Напишем профайлы, которые помогу нам запускать тесты в разных браузерах. Добавим этот код в pom.xml.

<profiles>
     <profile>
         <id>Chrome</id>
         <properties>
             <browser>chrome</browser>
         </properties>
     </profile>
 </profiles>

Рассмотрим профйл:

  • <profiles> - между этими тегами будут храниться все наши профайлы.
  • <profile> - сам профайл.
  • <id> - имя профайла.
  • <properties> - значения которые хранит профайл.
  • <browser> - наше значенгие, которое мы сами создаем.

На примере этого профайла можно создать для других браузеров: IE, FireFox, Opera и т.д

Maven plugin

<!--Plugin set custom properties-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <systemPropertyVariables>
                        <browser>${browser}</browser>              
                        <buildDirectory>${project.build.directory}</buildDirectory>
                    </systemPropertyVariables>
                </configuration>
            </plugin>
        </plugins>
    </build>

Этот плагин поможет вытащить значение properties из профайла в Java код.

<browser>${browser}</browser>
Эта строчка позволит обратиться из кода к данному значению.

Get properties from pom.xml

private void selectBrowser() {
    Configuration.browser = System.getProperty("browser");
}

Рассмотрим код:

  • System.getProperty(“browser”); - вернет нам chrome.

Теперь есть только один метод, вместо selectChrome, selectIE и т.д, который выбирает браузер в зависимости от maven profile.

Default properties.

Если не выбрать ни один из профилей, тесты не запустятся, так как не получится создать WebDriver.

Решение:

<!--Default properties-->
<properties>
    <browser>firefox</browser>
</properties>

Теперь если не будет выбран ни один профайл, тесты запустятся на FireFox.

Исходный код можно найти тут: GitHub project: WEB-QA.

PREVIOUSЗапуск тестов в несколько потоков с помощью TestNG
NEXTPage object pattern и BaseTest