Вы можете очень легко разделить их, используя категории JUnit и Maven.
Это очень и очень кратко показано ниже при тестировании модуля разделения и интеграции.
Определить интерфейс маркера
Первым шагом в группировке теста с использованием категорий является создание интерфейса маркера.
Этот интерфейс будет использоваться для пометки всех тестов, которые вы хотите запустить, как интеграционных тестов.
public interface IntegrationTest {}
Отметьте свои тестовые занятия
Добавьте аннотацию категории в начало вашего тестового класса. Требуется имя вашего нового интерфейса.
import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class)
public class ExampleIntegrationTest{
@Test
public void longRunningServiceTest() throws Exception {
}
}
Настройка Maven модульных тестов
Прелесть этого решения в том, что ничего не изменится с точки зрения модульного тестирования.
Мы просто добавляем некоторую конфигурацию в плагин maven surefire, чтобы он игнорировал любые интеграционные тесты.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<excludedGroups>
com.test.annotation.type.IntegrationTest
</excludedGroups>
</configuration>
</plugin>
Когда вы это сделаете mvn clean test
, будут выполняться только ваши немаркированные юнит-тесты.
Настроить интеграционные тесты Maven
Опять же, конфигурация для этого очень проста.
Мы используем стандартный отказоустойчивый плагин и настраиваем его для запуска только интеграционных тестов.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<groups>
com.test.annotation.type.IntegrationTest
</groups>
</configuration>
</plugin>
Конфигурация использует стандартную цель выполнения для запуска отказоустойчивого плагина во время фазы тестирования интеграции сборки.
Теперь вы можете сделать mvn clean install
.
На этот раз, а также при выполнении модульных тестов интеграционные тесты выполняются на этапе интеграционных тестов.