2017-02-22 16 views
2

Я, наконец, получил автоматизацию тестирования, используя JUnit4 @Category для каждого теста; они обозначены как PriorityHigh, PriorityMedium, или PriorityLow.Укладка свойств путем указания нескольких профилей Maven в командной строке

В моей pom.xml я каждый настроить в качестве профиля:

<profile> 
    <id>PriorityHigh</id> 
    <properties> 
     <testcase.category>com.categories.PriorityHigh</testcase.category> 
    </properties> 
</profile> 
<profile> 
    <id>PriorityMedium</id> 
    <properties> 
     <testcase.category>com.categories.PriorityMedium</testcase.category> 
    </properties> 
</profile> 
<profile> 
    <id>PriorityLow</id> 
    <properties> 
     <testcase.category>com.categories.PriorityLow</testcase.category> 
    </properties> 
</profile> 

, который затем используется в разделе плагинов:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${surefire.version}</version> 
    <configuration> 
     <groups>${testcase.category}</groups> 
     <systemPropertyVariables> 
      <automation.driver>${browser.name}</automation.driver> 
     </systemPropertyVariables> 
    </configuration> 
</plugin> 

Мой вопрос, когда я хочу, чтобы проверить как средний и Высокий, укажу

-P PriorityHigh,PriorityMedium 

Но вместо добавления/конкатенации они переписываются и так далее y Проведены средние тесты. Чтобы добавить дополнительные трудности, так как pom.xml жалуется, что $ {testcase.category} существует только в профилях, а не по умолчанию, я должен был добавить следующее:

<testcase.category>com.categories.PriorityHigh,com.categories.PriorityMedium,com.categories.PriorityLow</testcase.category> 

в случае не определен профиль.

Так два вопроса:

  1. Как получить профили правильно складывают в узле «группы»?
  2. Лучший способ работы с ним, если профиль не указан (все тесты должны выполняться)?

ответ

3

Легче всего сделать было бы угробить профилей и просто использовать системные свойства:

<properties> 
    <testcase.category>com.categories.PriorityHigh,com.categories.PriorityLow</testcase.category> 
</properties> 

... 

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
    <groups>${testcase.category}</groups> 
    ... 
    </configuration> 
</plugin> 

Тогда:

mvn verify -Dtestcase.category=com.categories.PriorityHigh 
# runs PriorityHigh tests 

mvn verify -Dtestcase.category=com.categories.PriorityHigh,com.categories.PriorityLow 
# runs PriorityHigh and PriorityLow tests 

mvn verify 
# runs PriorityHigh and PriorityLow tests 

Если вы не хотите, чтобы указать полностью класс квалифицированного класса в командной строке Maven, вы можете использовать плагин Build Helper, чтобы квалифицировать имена для вас:

<properties> 
    <testcase.category>PriorityHigh,PriorityLow</testcase.category> 
</properties> 

... 

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>3.0.0</version> 
    <executions> 
    <execution> 
     <id>build-fq-testcase-category</id> 
     <goals> 
     <goal>regex-property</goal> 
     </goals> 
     <configuration> 
     <name>fq.testcase.category</name> 
     <regex>([^,]+)</regex> 
     <value>${testcase.category}</value> 
     <replacement>com.categories.$1</replacement> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
    <groups>${fq.testcase.category}</groups> 
    </configuration> 
</plugin> 

Тогда:

mvn verify -Dtestcase.category=PriorityHigh 
# just run PriorityHigh tests 

mvn verify 
# run PriorityLow and PriorityHigh tests 

# etc. 
+0

Спасибо! Это гораздо более простое решение. Моя единственная жалоба заключается в том, что при использовании плагина Build Helper этот fq.testcase.name не распознается как значение в среде IDE, поэтому он всегда показывает значение с ошибкой. Код все еще компилируется и тесты все еще выполняются, но OCD во мне не нравится имя в красном. – MivaScott

+1

Возможно, вы могли бы обмануть свою IDE, добавив свойство '' в раздел '' с пустым или любым значением. – ryanp

+0

По какой-то причине, когда я добавляю пустое свойство, он останавливает Категории из за работой. Другими словами, он выполняет все тесты независимо от приоритета. – MivaScott

Смежные вопросы