Я хотел бы определить интерфейсы для всего проекта, которые будут использоваться в @Category
аннотациях, и настроить Maven для исключения их аннотированных тестов при построении всего проекта.
В проекте application есть тест, который я бы хотел классифицировать:
@Category(Integration.class)
@Test
public void testExternalResource() { ... }
Настройка:
Я создал многомодульный проект maven:
/container (has a pom with <modules> element)
/parent (all other modules inherit from its pom. has no source, only pom)
/util (other modules are depending on it)
/infra
/application (depending on infra and util, inherits from parent)
Будучи помешанным на инфраструктуре :), я хотел бы настроить весь свой проект, чтобы исключить группы в любом модуле. Итак, в модуле parent я определил:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<excludedGroups>com.mycompany.test.Integration</excludedGroups>
</configuration>
</plugin>
И я поместил интерфейс Integration
в модуль util (в util/src/test/java
), чтобы все модули видели:
package com.mycompany.test;
public interface Integration {}
И поскольку это test-jar
, я правильно настроил оба утилита и приложение .
Ошибка:
При запуске mvn clean install
я получаю
[ERROR] Failed to execute goal org.apache.maven.plugins:
maven-surefire-plugin:2.16:test
(default-test) on project util: Execution default-test of goal
org.apache.maven.plugins:maven-surefire-plugin:2.16:test
failed: There was an error in the forked process
[ERROR] java.lang.RuntimeException:
Unable to load category: com.mycompany.test.Integration
Ну, конечно, класс недоступен - я запихал его в тест-банку в первом модуле проекта. :(
Где мне разместить интерфейс Integration
, чтобы он был доступен для моей конфигурации mvn и моего исходного кода?