Die Junits, die ich in meinem Projekt habe, müssen Eigenschaftendateien aus dem Klassenpfad laden. Wie kann ich das Verzeichnis dieser Eigenschaftendateien angeben, damit Maven das im Klassenpfad vor dem Ausführen der Tests setzt?Maven - Verzeichnis zum Klassenpfad hinzufügen, während Tests ausgeführt werden
Antwort
Sie können build-helper-maven-plugin verwenden, um zusätzliche Testressourcenverzeichnisse wie folgt anzugeben. Mit Hilfe der Konfiguration unten, wird der Inhalt des Test-Ressourcen-Verzeichnis wird während der generieren-Test-Quellen Phase zu dem Ziel/Test-Klassen-Verzeichnis kopiert werden:
<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>
Wenn Sie nur setzen wollen Ihre Immobilie Dateien irgendwo auf der Festplatte und nicht mag, dass diese Eigenschaft Dateien kopieren während der Build-Ziel/Test-Klassen, können Sie es tun auf diese Weise
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>/add/this/to/path</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
Leider nimmt m2e Surefire-Konfiguration nicht auf, wenn Tests von Eclipse ausgeführt werden. Schade, denn das ist ein bisschen einfacher als das add-test-resource-Ziel von build-helper-maven-plugin. – thSoft
Warum nicht einfach test/resources
verwenden und platzieren Sie Ihre Eigenschaften in dem classpath aus dieser Punkt. Sie werden nur für die Testphase da sein.
Man hat nur einen solchen Ordner, aber oft mehr als eine Testumgebung. – 30thh
Check out maven Profile, mein Freund. –
Wenn Sie eine Umgebung mit mehreren Ressourcen haben, können Sie das maven-Profil verwenden und Ihre verschiedenen Ressourcen entsprechend dem Profil einstellen, das Sie testen.
test/resources/uat
test/resources/prod
test/resources/dev
Aber usualy wenn Sie, dass Sie Sie Integrationstest dann brauchen nicht die Build-Helfer-Maven-Plugin machen.
Die maven-resources-plugin
hat eine copy-resources
Ziel, mit dem Sie Ressourcen kopieren können. Zum Beispiel:
<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>
Dadurch wird der Inhalt des conf
Ordner in der Basis Ihres Projekts auf den target/test-classes
Ordner kopieren (es sei denn, Sie project.build.testOutputDirectory geändert), die während Ihrer Unit-Tests zu dem Classpath hinzugefügt werden .
Sie können auch neue Testressourcenordner hinzufügen.
Der erste Pfad, src/test/resources
, ist der Standardwert. Angenommen, Sie möchten immer noch den Standardpfad verwenden, vergewissern Sie sich, dass er enthalten ist. (Das testResources
-Tag überschreibt Ihre Standardwerte. Wenn Sie den Standardpfad nicht explizit angeben, wird er nicht mehr verwendet.)
Das hat für mich funktioniert. +1 für das Hinweis auf die Notwendigkeit für den Standard. –
Genau das habe ich gesucht, danke! Viel einfacher als die akzeptierte 'build-helper-maven-plugin' Lösung. Für alle anderen, die nach einem guten Weg suchen, dies zu tun, kann das '
- 1. Gradle - Verzeichnis zum Klassenpfad hinzufügen
- 2. Klassenpfad zum Steg hinzufügen, der in Maven-Integrationstest läuft
- 3. Play Framework - neue Verzeichnisse zum Klassenpfad hinzufügen
- 4. Wie sagt man Maven, welche Tests ausgeführt werden sollen?
- 5. Hinzufügen zum Klassenpfad unter OSX
- 6. eine Datei zum Klassenpfad hinzufügen
- 7. Oracle Weblogic Hinzufügen von Gläsern zum Klassenpfad?
- 8. Zusätzlichen Pfad zum exec-maven-plugin hinzufügen
- 9. Scalatest Maven Plugin "keine Tests wurden ausgeführt"
- 10. wie ich meine externe JAR-Datei zum Klassenpfad hinzufügen
- 11. Spielen! Framework: anpassen, welche Tests ausgeführt werden
- 12. Wie src-Verzeichnis mit maven Eclipse-Plugin an den Klassenpfad übergeben werden
- 13. Wie werden Golang-Tests sequenziell ausgeführt?
- 14. Maven Klassenpfad Container aktualisieren Job
- 15. In welcher Reihenfolge werden phpunit-Tests ausgeführt?
- 16. MSTest-Tests gelingen, wenn sie isoliert ausgeführt werden, scheitern, wenn sie mit anderen Tests ausgeführt werden
- 17. Django ignoriert Router, wenn Tests ausgeführt werden?
- 18. Zu ThreadPool hinzufügen, während es ausgeführt wird
- 19. Wie werden Jest-Tests sequenziell ausgeführt?
- 20. Wie kann festgestellt werden, ob PHPUnit-Tests ausgeführt werden?
- 21. Maven SLF4J: Klassenpfad enthält mehrere SLF4J-Bindungen
- 22. Ausschließen von Tests, die in IntellIJ ausgeführt werden
- 23. Maven wird keine Tests ausführen
- 24. Element zum Startskript hinzufügen und als bestimmter Benutzer ausgeführt werden?
- 25. Hudson verwendet Maven-generierten Klassenpfad nicht?
- 26. Setup-Methode fehlgeschlagen, während Tests von Teamcity ausgeführt wurden
- 27. Hinzufügen von twitter4j zum Klassenpfad in der Eingabeaufforderung
- 28. Verwenden des Maven-Surefire-Plugins zum Einbinden von Tests
- 29. Verhindern, dass eine Methode während der Tests ausgeführt wird Codeception
- 30. Hinzufügen von externen Ressourcen zum Klassenpfad in Tomcat 8
Es spielt keine Rolle, aber für Ordnung, sollte die Phase nicht generiert werden -ressourcen statt generate-test-sources? – thSoft