Запуск тестов JUnit, содержащихся в баке зависимости, используя Maven Surefire
У меня есть jar в моем репозитории maven, который содержит тесты junit, которые должны выполняться в разных проектах, потому что он способен проверять проект и проверять некоторые его особенности. К сожалению, surefire не забирает тесты, которые содержатся в банке, поскольку этот Feature Request показывает.
В запросе функции они предлагают распаковать банку, которая затем будет выполнена с помощью surefire.
Я успешно распаковал банку с помощью модуля maven-dependency-plugin, но содержащиеся тесты в любом случае не выполняются. Вот как я настроил плагин maven-dependency, чтобы распаковать мою банку:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>process-test-classes</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>de.mwx.test</groupId>
<artifactId>selenium-test-base</artifactId>
<version>0.1</version>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.directory}/classes
</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Любая помощь будет назначена.
Ответы
Ответ 1
Существует способ запустить тест в Maven из другой банки.
из версии 2.15 maven-surefire-plugin вы можете указать maven сканировать ваши тестовые банки на наличие тестов и запускать их.
Вам не нужно извлекать тестовую банку.
Просто добавьте зависимость в свой тестовый jar и:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<dependenciesToScan>
<dependency>test.jar.group:test.jar.artifact.id</dependency>
</dependenciesToScan>
</configuration>
</plugin>
Взял этот материал из https://gist.github.com/aslakknutsen/4520226
И https://issues.apache.org/jira/browse/SUREFIRE-569
Как и ожидалось, это работает для JUnit и Testng. Вероятно, будет работать для всего, что может работать безошибочно.
Ответ 2
(Это просто повторяет то, что в комментарии выше от khmarbaise, но поскольку оно не было выяснено, я думаю, что это стоит повторить):
Используйте каталог тестовых классов вместо папки классов как outputDirectory:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>process-test-classes</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>de.mwx.test</groupId>
<artifactId>selenium-test-base</artifactId>
<version>0.1</version>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.directory}/test-classes
</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Ответ 3
Как описано в этом выпуске, вам необходимо иметь Suite, который содержится в вашем проекте, который НЕ находится в тестовой банке.