2008-10-30 7 views
8

У нас возникла постоянная необходимость в том, что я не могу понять, как обращаться с использованием инструментов Maven 2 и документации.Есть ли способ отделить длительный период (например, стресс-тесты), чтобы они не запускались по умолчанию в Maven 2?

Некоторые из наших разработчиков имеют очень длительные тесты JUnit (обычно стресс-тесты), которые ни при каких обстоятельствах не должны выполняться как обычная часть процесса сборки/ночной сборки.

Конечно, мы можем использовать механизм исключения в SUREFIRE плагина и просто выбивать их из сборки, но в идеале мы хотели бы что-то, что позволило бы разработчику запускать их по желанию через Maven 2.

ответ

11

Обычно вы добавить профиль в конфигурации Maven, который работает другой набор тестов:

перспективе это с МВН -Pintegrationtest установить

<profile> 
     <id>integrationtest</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine> 
         <forkMode>once</forkMode> 
         <includes> 
          <include>**/**/*Test.java</include> 
          <include>**/**/*IntTest.java</include> 
         </includes> 
         <excludes> 
          <exclude>**/**/*SeleniumTest.java</exclude> 
         </excludes> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
     <activation> 
      <property> 
       <name>integrationtest</name> 
      </property> 
     </activation> 
    </profile> 
1

Используйте тест интеграции плагина, такие как Super Helpful Integration Test Thingy отделить Integra Тесты (длинные, системные) от Unit Test (пуристы говорят, что максимум 30 секунд для всех настоящих модульных тестов для запуска). Сделайте два пакета Java для тестирования модулей и тестов интеграции.

Тогда не связывают этот плагин к фазе (нормальный Maven жизненный цикл), и только запустить его, когда он явно называется в качестве цели, например, так: mvn shitty:clean shitty:install shitty:test

<plugins> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>shitty-maven-plugin</artifactId> 
    </plugin> 
</plugins> 

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

0

Другой вариант заключается в том, чтобы стресс-тест обнаружил, что он работает в maven и запускается только один или два раза. т. е. превратиться в регулярный функциональный тест. Таким образом, вы можете проверить, что код по-прежнему хорош, но не запускается в течение длительного времени.

+1

Пахнет немного как взломать меня. – 2016-04-28 10:08:23

4

Добавление к krosenvold «s ответ, чтобы убедиться в отсутствии неожиданного поведения, убедитесь, что у вас также есть профиль по умолчанию, который активен по умолчанию, что исключает интеграция или stresstests вы хотите запустить в своем специальном профиле.

<profile> 
    <id>normal</id> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <excludes> 
         <exclude>**/**/*IntTest.java</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
</profile> 

Вам нужно будет создать профиль, как это, просто перечисляя безошибочный-плагин вне профиля, отменяют профиль она должна быть выбрана с:

mvn -P integrationtest clean install