Тестирование в Maven

Еще один важный момент работы Maven – это фаза тестирования. Она выполнится, если ты запустишь фазу test, package, verify или любую другую, которая идет после них.

По умолчанию Maven запустит все тесты, которые находятся в папке src/test/java/. Чтобы отличить тесты, которые нужно запустить, от других java-файлов, было принято соглашение имен. Тестами считаются java-классы, чьи имена начинаются с “Test” и заканчивается на “Test” или “TestCase”.

Общий шаблон имен тестов:

  • **/Test*.java
  • **/*Test.java
  • **/*TestCase.java

Данные тесты должны быть написаны на основе тестового фреймворка Junit или TestNG. Это очень крутые фреймворки, о них мы обязательно поговорим немного позднее.

Результаты тестирования в виде отчетов в форматах .txt и .xml сохраняются в директории ${basedir}/target/surefire-reports.

Настройка тестирования

Вариантов запуска тестов обычно бывает очень много, поэтому разработчики Maven сделали специальный плагин, в параметрах к которому можно задать всю детальную информацию по тестированию. Плагин называется Maven Surefire Plugin и доступен по ссылке.

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
    	<version>2.12.4</version>
    	<configuration>
        	<includes>
                <include>Sample.java</include>
        	</includes>
    	</configuration>
	</plugin>
</plugins>

В примере мы указали плагину, что ему нужно запустить единственный тестовый класс – Sample.java.

Как быстро исключить поломанные тесты

Чтобы запустить проект на тестирование, нужно выполнить команду mvn test. Но чаще возникает потребность исключить из тестирования некоторые тесты. Например, они могут быть поломаны, выполняться слишком долго, или по любым другим причинам.

Во-первых, можно просто сказать Maven пропустить тесты при выполнении фазы сборки. Пример:

mvn clean package -Dmaven.test.skip=true

Во-вторых, в конфигурации плагина можно отключить выполнение тестов:


<configuration>
    <skipTests>true</skipTests>
</configuration>

Ну и в-третьих, тесты можно исключить с помощью тега <exclude>. Пример:


<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
    	<version>2.12.4</version>
    	<configuration>
        	<excludes>
           	<exclude>**/TestFirst.java</exclude>
	           <exclude>**/TestSecond.java</exclude>
    	</excludes>
    	</configuration>
    </plugin>
</plugins>