2017-01-11 5 views
1

У нас есть Gradle проект с mutliple модулей - поэтому каждый модуль - например, администратора, в конечном итоге иметь что-то вроде этого:Jacoco Gradle мульти модуль

task admintest(type: Test) { 
    description = "Tests of admin" 
    testClassesDir = sourceSets.admintest.output.classesDir 
    classpath += sourceSets.admintest.runtimeClasspath 
} 
check.dependsOn admintest 

сейчас - мы генерирующий отчет jacoco - отчет фактически включает в себя все классы из всех разных модулей, но только охват из тестов, которые выполнялись как часть основного модуля, то есть «тестовая» задача - в то время как админты и другие выполняются, охват всегда равен нулю. Как получить jacoco, чтобы также получить покрытие от admintests и других модульных тестов?

ответ

0

Нашел - для тех, кто пытается сделать это - секретный соус указать другие задачи модули тестирования в executionData

например:

jacocoTestReport { 
    executionData test, admintest, commontest 
} 
+0

Этот вопрос и этот ответ являются крошечные разрядный ввод в заблуждение. Ваша настройка проекта - это один проект с несколькими исходными наборами, каждый из которых имеет специальную задачу «тест» (которая активирует покрытие кода jacoco и создает данные выполнения), но отчет jacoco - это единственная задача, которая обязательно должна быть агрегирована , Ваш ответ показывает, что вам просто нужно обратиться к тестовым заданиям или наборам источников. –

+0

Другая распространенная настройка - иметь несколько подпроектов вместо отдельных источников. В этом случае вы все равно можете создать отчет о покрытии совокупного кода с помощью одной задачи в корневом проекте, который вы можете выполнить аналогично с правильным ссылкой на суб-проект, или у вас есть возможность использовать задачу JacocoMerge для явного агрегирования исполняемые файлы, созданные для каждого подпроекта, перед созданием отчета из этого файла данных совокупного исполнения. –