2015-08-11 3 views
7

Я пишу библиотеку java foo, которая имеет зависимость от bar:1.1+. Но библиотека bar сильно изменилась с течением времени, и я хочу, чтобы моя библиотека была совместима с каждой версией bar (1.1 ... 1.10).Как запустить модульные тесты против нескольких версий зависимостей

Поэтому я хотел бы (во время CI) запускать каждый из моих модульных тестов с помощью classpath, включая bar:1.X, с каждой версией bar.

Я использую gradle и junit/spock, но я открыт для решений с вариациями.

Справа Я могу дублировать заданиями по градации, но это довольно громоздко, и результаты тестов могут быть сложными для агрегации. В идеале я бы определить прямо рядом с моим испытанием, какие версии бара он должен работать с, например .:

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

Но я не нахожу инструмент/бегуна для этого.

+1

Ну, с Maven можно просто определить несколько профилей и запустите тесты с этими профилями (см. http://stackoverflow.com/questions/166895/different-dependencies-for-different-build-profiles-in-maven). Я думаю, что у градле есть подобные возможности. –

+2

Просто хотел отметить, что тесты, которые вы хотите запустить здесь, - это тесты интеграции, а не модульные тесты. Для модульных тестов обычно было бы издеваться над зависимостью от библиотеки бара. – unigeek

+0

@unigeek не говорит, что вы ошибаетесь, но это может зависеть от того, какая библиотека 'bar', допустим, это guava, ни один здравомыслящий человек не будет издеваться над всеми ее применениями ^^ – Gluck

ответ

0

Это связано с Maven и не уверен, как это будет соответствовать CI, но может помочь вам начать работу.

Одним из вариантов может быть использование Maven Archetype<- Дополнительная информация

Используя mvn archetype:generate, вы можете создать проект с версии вам необходимо динамически

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

Я не знаком с архетипами maven, но AFAICT это только поможет мне создать один проект на версию зависимости, который я бы хотел избежать и сохранить один проект. – Gluck