2013-09-26 4 views
4

Я новичок в градиенте. Я использую приведенный ниже код. Но он генерирует покрытие для единичных тестов. Но это не создавало для тестовых случаев интеграции. У меня есть тестовые классы в пакете src/test/java.Gradle: как создать отчет о покрытии для теста интеграции с использованием jacoco

test { 
    dependsOn jettyRunWar 
    ignoreFailures true 
    finalizedBy jettyStop 
} 

apply plugin: 'jacoco' 

jacocoTestReport { 
    group = "Reporting" 
    description = "Generate Jacoco coverage reports after running tests." 
    additionalSourceDirs = files(sourceSets.main.allJava.srcDirs) 
} 

ответ

2

Похоже, что вам нужно сказать build.gradle, где ваши ИНТЕГРАЦИЯ тесты (т.е. папка, содержащая те IT тесты) с использованием sourceSets. В моем случае у меня есть источник в src/java (вместо src/main/java - gradle default). Мои юниты (Junit) в папке test/java и мои тесты интеграции в папке src/java-test.

sourceSets { 
    main { 
     java { 
     srcDir 'src/java' 
     } 
    } 
    test { 
     java { 
     srcDir 'test/java' 
     } 
     resources { 
     srcDir 'test/resources' 
     srcDir 'conf' 
     } 
    } 
    integrationTest { 
     java { 
     srcDir 'src/java-test' 
     } 
    } 
} 

Тогда у меня есть integrationTest задание как ... который вы можете настроить, как вы, возможно, не cleanTest (пользовательское задание, которое я создал), так что вы можете игнорировать, что dependsOn ... я думаю, что в вашем случае вы будете использовать что-то вроде jettyStart, как вы используете, что для IT-тестов (начиная контейнер для запуска ИТ-тестов, а затем функции finalizedBy остановить причал .. пристань плагин)

task integrationTest(type: Test, dependsOn: cleanTest) { 
    jacoco { 
     //destinationFile = file("$buildDir/jacoco/jacocoTest.exec") 
     destinationFile = file("$buildDir/jacoco/integrationTest.exec") 
     //classDumpFile = file("$buildDir/jacoco/classpathdumps") 
     classDumpFile = file("$buildDir/classes/integrationTest") 
    } 
    testClassesDir = sourceSets.integrationTest.output.classesDir 
    classpath = sourceSets.integrationTest.runtimeClasspath 
} 

SEE этого пост для более подробного вывода структуру и сценарий, которые у меня есть в конце. Я получаю .exec для обоих модульных тестов (test.exec) и ИТ-тестов intergrationTest.exec .. но я не получаю отчеты jacoco.xml/jacocoHtml для обоих тестов. Я также обнаружил, что если я запустил «градиентную чистую сборку» (включающую вызов «тестовой» задачи) и «gradle clean build integrationTest», то позже одна перезаписывает данные единичных тестов в папке с сборкой/тестированием результатов и сборке/отчетах/тестовой папке.

Jacoco Unit and Integration Tests coverage - individual and overall

Примечание: в моем случае, jacocoTestReport определяется в глобальной папке Gradle init.d в одном из общего Gradle файла. Это поможет нам не включать один и тот же код во все/на уровне проекта build.gradle.

 Смежные вопросы

  • Нет связанных вопросов^_^