2013-12-17 3 views
2

У меня есть унаследованное приложение с модульным модулем тестирования, который отделен от модулей приложения. Я преобразование проекта использовать Gradle и структура выглядит следующим образом:Gradle и JaCoCo: классы инструментов из отдельного подпроекта

/root 
    /module1 
    /module2 
    ... 
    /moduleN 
    /test 

где тестовый модуль выполняет тесты для Module1 через Модулен (и зависит от них). Я знаю, что это не очень хорошая практика, так как это просто поражает цель модульных тестов, но, как известно, унаследованный код всегда является головной болью для работы.

Итак, прежде чем я начну рефакторинг кода, чтобы каждый модуль имел свои собственные модульные тесты (что означает разумную разборку тестового модуля, т. Е. Большую работу), я хотел найти временное решение для получения правильного кода, т. е. иметь инструмент JaCoCo для всех классов из модуля 1, ..., moduleN вместо простого тестирования модуля.

Есть ли способ рассказать JaCoCo о классах приборов из других модулей?

ответ

2

Чтобы включить результаты покрытия из подпроектов «модуль *» в проекте «тест», вы можете попробовать что-то подобное в вашем build.gradle из тестового проекта:

// [EDIT] - 'afterEvaluate' NOK, use 'gradle.projectsEvaluated' instead (see comments) 
// afterEvaluate { 
gradle.projectsEvaluated { 
    // include src from all dependent projects (compile dependency) in JaCoCo test report 
    jacocoTestReport { 
     // get all projects we have a (compile) dependency on 
     def projs = configurations.compile.getAllDependencies().withType(ProjectDependency).collect{it.getDependencyProject()} 
     projs.each { 
      additionalSourceDirs files(it.sourceSets.main.java.srcDirs) 
      additionalClassDirs files(it.sourceSets.main.output) 
     } 
    } 
} 
+0

Спасибо за ответ. Я пробовал это, но сборка завершилась неудачей со следующей ошибкой: 'Не удалось найти свойство 'sourceSets' в проекте 'modulex'' –

+0

Обратите внимание, что' modulex '- действительно проект java, поэтому необходимо определить sourceSets. –

+0

И вот ответ на этот вопрос (http://stackoverflow.com/questions/15347364/gradle-multiproject-gives-could-not-find-property-sourcesets-on-project-erro). –

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