2015-08-11 18 views
7

Sto scrivendo una libreria java foo che ha una dipendenza su bar:1.1+. Ma la libreria bar è cambiata un po 'nel tempo e mi piacerebbe assicurarmi che la mia libreria sia compatibile con tutte le versioni di bar (1.1 ... 1.10).Come eseguire unit test contro diverse versioni di una dipendenza

Quindi mi piacerebbe (durante CI) eseguire ciascuno dei miei test di unità con un classpath compreso bar:1.X, con ogni versione disponibile di bar.

Sto usando gradle e junit/spock ma sono aperto a soluzioni con variazioni.

Destra Posso duplicare le attività di test gradle, ma è piuttosto complicato ei risultati dei test possono essere difficili da aggregare. Idealmente mi piacerebbe definire proprio accanto alla mia prova quali versioni di bar dovrebbe funzionare con, ad es .:

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

Ma trovo nessuno strumento/runner per questo.

+1

Bene, con Maven si può semplicemente definire più profili e avviare i test con questi profili di conseguenza (consultare http://stackoverflow.com/questions/166895/different-dependencies-for-different-build-profiles-in-maven). Credo che Gradle abbia possibilità simili. –

+2

Volevo solo sottolineare che i test che si desidera eseguire qui sono in realtà test di integrazione, non test di unità. Per i test unitari, sarebbe normale prendere in giro la dipendenza dalla libreria della barra. – unigeek

+0

@unigeek non ti sta dicendo che stai sbagliando, ma può dipendere da quale libreria 'bar', diciamo che è guava, che nessun uomo sano di mente si burla di tutti i suoi usi ^^ – Gluck

risposta

0

Questo è correlato a Maven e non è sicuro di come si adatta alla CI, ma può aiutarti a iniziare.

Una possibilità potrebbe essere quella di utilizzare il Maven Archetype<- Ulteriori informazioni

Utilizzando il mvn archetype:generate, è possibile generare progetti con la versione è necessario dinamicamente

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

Non ho familiarità con gli archetipi di Maven, ma AFAICT mi aiuterà solo a generare un progetto per versione di dipendenza, che vorrei evitare e mantenere un singolo progetto. – Gluck