2014-01-29 3 views
4

Любой, кто может запускать тесты из «тестовых» банок зависимости в градирном сборке? У меня есть сценарий построения градиента, который включает в себя несколько тестовых банок, а также зависимость от testRuntime. Я хотел бы запустить тесты в этих зависимостях, используя «тест градуировки».Gradle для запуска тестов из «тестовых» банок с зависимостью

Я вижу, что у градле не существует готового решения для запуска тестов из банки, как указано в this link. Я пытаюсь следовать опциям «unpack», предложенным в этом сообщении. Не уверен, как мне связать задачу распаковки с тестовой задачей для повторения всех зависимостей тестовой банки и запуска тестов? PS: Я знаю, что нам не нужно запускать тесты зависимостей в потребляющих проектах. Но по моим причинам я должен это сделать.

Любые эксперты по градации о том, как этого достичь?

[EDIT]
Я использовал приведенное ниже код для запуска тестов из банки. Но то, что я хочу, является общей задачей, такой как «runTestsFromDependencyJars», которая проходит через все зависимости конфигурации теста и запускает тест. Не знаете, как мне заставить его работать для всех таких зависимостей?

task unzip(type: Copy) { 
     from zipTree(file('jar file with absolute path')) 
     into file("$temporaryDir/") 
    } 

    task testFromJar(type: Test , dependsOn: unzip) { 
     doFirst { 
      testClassesDir=file("$temporaryDir/../unzip/") 
      classpath=files(testClassesDir)+sourceSets.main.compileClasspath+sourceSets.test.compileClasspath 
     } 
    } 
+0

Вы пробовали здесь: _ [testClassesDir] (http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.Test.html#org.gradle. api.tasks.testing.Test: testClassesDir) _? Как насчет использования _project.sourceSets.test.output.classesDir_ path как места для распаковки? – topr

+0

@topr См. Мое редактирование. Я могу запустить конкретную банку. но не уверен, как сделать его общим для всех тестовых зависимостей. –

ответ

2

Обнаружено решение с использованием подхода ant junit.

configurations { 
     testsFromJar { 
     transitive = false 
     } 
     junitAnt 
} 

dependencies { 
     junitAnt('org.apache.ant:ant-junit:1.9.3') { 
      transitive = false 
     } 
     junitAnt('org.apache.ant:ant-junit4:1.9.3') { 
      transitive = false 
     } 

    compile "groupid:artifact1name:version" 
    compile "groupid:artifact2name:version" 
    testsFromJar (group:'groupid', name:'artifact1 name', version:'version',classifier:'tests') 
    testsFromJar (group:'groupid', name:'artifact2 name', version:'version',classifier:'tests') 

} 
ant.taskdef(name: 'junit', classname: 'org.apache.tools.ant.taskdefs.optional.junit.JUnitTask', 
      classpath: configurations.junitAnt.asPath) 


task runTestsFromJar() << { 
     configurations.testsFromJar.each { 
      file -> 
       ant.junit(printsummary:'on', fork:'yes', showoutput:'yes', haltonfailure:'yes') { //configure junit task as per your need 
        formatter (type:'xml') 
        batchtest(todir:"$temporaryDir", skipNonTests:'true') { 
         zipfileset(src:file, 
           includes:"**/*Test.class", 
         ) 
        } 
        classpath { 
         fileset(file:file) 
         pathelement(path:sourceSets.main.compileClasspath.asPath+sourceSets.test.compileClasspath.asPath) 
        } 
       } 
     } 
    } 
Смежные вопросы