1. Тестування в 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.

2. Налаштування тестування

Варіантів запуску тестів зазвичай буває дуже багато, тому розробники 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.

3. Як швидко виключити поламані тести

Щоб запустити проєкт на тестування, необхідно виконати команду 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>