2015-08-11 4 views
7

Ich schreibe eine Java-Bibliothek foo, die eine Abhängigkeit von bar:1.1+ hat. Aber Bibliothek bar hat sich im Laufe der Zeit ziemlich geändert, und ich möchte sicherstellen, dass meine Bibliothek mit jeder Version von bar (1.1 ... 1.10) kompatibel ist.So führen Sie Komponententests für mehrere Versionen einer Abhängigkeit aus

Also möchte ich (während CI) jeden meiner Komponententests mit einem Klassenpfad einschließlich bar:1.X ausführen, mit jeder verfügbaren Version von bar.

Ich benutze Gradle und Junit/Spock, aber ich bin offen für Lösungen mit Variationen.

Richtig Ich kann durch Großtestaufgaben duplizieren, aber das ist ziemlich umständlich, und die Testergebnisse können schwierig zu aggregieren sein. Im Idealfall würde ich direkt neben meinen Test, welche Versionen von Bar definiert es mit ausgeführt werden soll, z.B .:

@RunWith("com.acme:bar:1.1..1.10") 
public class MyTest { ... } 

Aber ich finde kein Werkzeug/Läufer dafür.

+1

Nun, mit Maven Sie einfach mehrere Profile definieren könnte und Starten Sie die Tests mit diesen Profilen entsprechend (siehe http://stackoverflow.com/questions/166895/different-dependencies-for-different-build-profiles-in-maven). Ich nehme an, dass Gradle ähnliche Möglichkeiten hat. –

+2

Ich wollte nur darauf hinweisen, dass die Tests, die Sie hier ausführen möchten, tatsächlich Integrationstests sind, keine Komponententests. Bei Komponententests wäre es üblich, die Abhängigkeit von der Balkenbibliothek zu verspotten. – unigeek

+0

@unigeek nicht sagen, du liegst falsch, aber es kann abhängen, was Bibliothek 'bar' ist, sagen wir, es ist Guave, kein vernünftiger Mann wird alle seine Anwendungen verspotten ^^ – Gluck

Antwort

0

Dies ist mit Maven verwandt und nicht sicher, wie es mit CI passt, aber kann Ihnen helfen, anzufangen.

Eine Option sein kann, die Maven Archetype<- Mehr Infos

Mit dem mvn archetype:generate zu verwenden, Sie Projekt mit der Version generieren können Sie benötigen dynamisch

mvn archetype:generate         
    -DarchetypeGroupId=<archetype-groupId>     
    -DarchetypeArtifactId=<archetype-artifactId>   
    -DarchetypeVersion=<archetype-version>     
    -DgroupId=<my.groupid>         
    -DartifactId=<my-artifactId> 
    -Dversion=<custom-version> 
+0

Ich bin nicht vertraut mit Maven Archetypen, aber AFAICT das wird mir nur helfen, ein Projekt pro Abhängigkeitsversion zu generieren, die ich gerne vermeiden und ein einzelnes Projekt behalten würde. – Gluck