У Junits, которые у меня есть в моем проекте, нужно загрузить файлы свойств из пути к классам. Как я могу указать каталог этих файлов свойств, чтобы Maven установил это в пути к классам перед запуском тестов?
Maven - добавление каталога в путь к классам при выполнении тестов
Ответ 1
Вы можете использовать build-helper-maven-plugin для указания дополнительных каталогов тестовых ресурсов следующим образом. Используя приведенную ниже конфигурацию, содержимое каталога тестовых ресурсов будет скопировано в каталог target/test-classes во время фазы генерации тестовых источников:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<id>add-test-resource</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>path/to/additional/test/resources</directory>
<excludes>
<exclude>**/folder-to-exclude/**</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Ответ 2
Если вы просто хотите разместить свои файлы свойств на диске и не хотите копировать эти файлы свойств в целевые/тестовые классы во время сборки, вы можете сделать это таким образом.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>/add/this/to/path</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
Ответ 3
Вы также можете добавить новые папки тестовых ресурсов.
<build>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/something_else</directory>
</testResource>
</testResources>
</build>
Первый путь, src/test/resources
, является значением по умолчанию. Предполагая, что вы все еще хотите использовать путь по умолчанию, убедитесь, что он включен. (Тег testResources
перезаписывает ваши значения по умолчанию, поэтому, если вы не указали путь по умолчанию явно, он перестанет использоваться.)
Ответ 4
Почему бы просто не использовать test/resources
и поместить ваши свойства в путь к классам с этой точки. Они будут присутствовать только на этапе тестирования.
Ответ 5
Если у вас есть несколько ресурсов, вы можете использовать профиль maven и поместить различные ресурсы в соответствии с профилем, который вы тестируете.
test/resources/uat
test/resources/prod
test/resources/dev
Но обычно, если вам нужно, чтобы вы делали интеграционный тест, вам не нужен плагин build-helper-maven.
Ответ 6
maven-resources-plugin
имеет цель copy-resources
, которая позволит вам копировать ресурсы. Например:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>additional-resources</id>
<phase>process-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/conf</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Это скопирует содержимое папки conf
в базе вашего проекта в папку target/test-classes
(если вы не изменили файл project.build.testOutputDirectory), который будет добавлен в путь к классам во время тестирования устройства.