2010-12-23 8 views
3

Ich habe gerade begonnen, an einem Java-Projekt zu arbeiten (wie ich normalerweise .net), und eines der ersten Dinge, die mir seltsam erscheint ist, dass im Maven-Projekt gibt es ein/src und ein/Test-Verzeichnis, wo offensichtlich Der Quellcode und die Tests sollten gehen.Tests von src mit Maven Project trennen?

In .net zog ich die Tests in einem separaten Assembly/Projekt haben, also zum Beispiel hätte ich:

  • MyProject
  • MyProject.Tests

So kann ich nicht Ich muss meinen implementierten Code mit irgendwelchen Tests aufblähen und es macht es einfacher, meinen Code in echter Isolation zu testen und in vielen Fällen habe ich keine Tests pro Projekt geschrieben. Ich hätte nur lösungsweite Unit-/Integrations-/Abnahmetests MySolution.UnitTests, MySolution.IntegrationTests.

Aber in Java scheint es einfach gebündelt zu sein, und ich würde es lieber heraustrennen, aber ich höre, dass Maven eine grausame Geliebte ist, wenn man Dinge anders als die Standardstrukturen machen will.

So Beitrag zu regieren zurück in meinen Hauptfragen sind:

  • Gibt es eine Möglichkeit, die Tests aus dem Projekt auf den oben genannten Informationen sind
  • Basierend abzuscheiden es Profis für tatsächlich mit die Tests innerhalb des Projekts? (Außer, wenn Sie es überprüfen Sie immer die Tests dort haben)

Antwort

6

Ich habe nicht meine entfalteten Code mit irgendwelchen Tests

Die implementierbare Artefakte (JAR-Datei, Krieg Dateien) aufblasen enthält nicht die Testklassen oder Daten.

Gibt es eine Möglichkeit, die Tests aus dem Projekt zu trennen

Sie könnten es in zwei Projekte aufgeteilt, wobei ein „Test“ Projekt nur die Tests enthält, und in Abhängigkeit von den „echten“ Projekt.

Aber vor allem mit Maven möchten Sie wahrscheinlich die gleichen Projekt-Layout-Konventionen befolgen, die alle anderen (oder zumindest die Mehrheit) haben. Dies wird Ihr Leben einfacher machen (weniger Konfiguration).

Noch einmal, die Tests werden es nicht in das Produkt zu implementieren, so dass das aktuelle Layout sollte kein Problem sein.

Ich hätte nur Lösung Wide Unit/Integration/Akzeptanz Tests, d. H. MySolution.UnitTests, MySolution.IntegrationTests.

Für Integrationstests macht das eigentlich Sinn. In diesem Fall definieren Sie ein "Test" -Projekt, das von allen anderen Projekten abhängt, aus denen die Lösung besteht (ich würde die Komponententests immer noch mit dem Projekt durchführen, das sie testen).

+1

Der entscheidende Punkt gemacht werden, ist standardmäßig, dass nur in den Topf gelegt Dinge Klassen von src/main/java und Artefakte aus src/main/resources kompiliert werden. Sie müssten dem Maven explizit sagen, dass er Tests in ein bereitgestelltes Glas einbringen soll. –

2

In einer Standard-Maven-Konfiguration werden die Tests nur ausgeführt, aber nicht implementiert.

Per Konvention, alles in src/main landet im Zielarchiv, während alles andere nicht tut.

Standardmäßig ein Maven JAR Projekt schafft ein Glas nur mit den Klassen, die von src/main/java kompiliert werden. Sie können verschiedene Plug-Ziele verwenden, um zu erstellen:

Aber alle diese erfordern zusätzliche Schritte.

Verwandte Themen